c++ - Why do I get an exception when I pass a std::string to printf? -


this question has answer here:

#include<iostream> #include<string.h> #include<stdio.h>  using namespace std;  int main() {     char a[10] = "asd asd";     char b[10] ="bsd bsd";     string str(a);     str.append(b);     printf("\n--------%s--------\n", str);     return 0; } 

i can't understand why produces exception? program tries append strings. desired output when using std::cout not when using printf.

because std::string not same char const *, %s format specifies. need use c_str() method return pointer expected printf():

printf("\n--------%s--------\n", str.c_str()); 

to more technical, printf() function imported c world , expects "c-style string" (a pointer sequence of characters terminated null character). std::string::c_str() returns such pointer c++ strings can used existing c functions.


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -