C++ printf string.c_str() char[]
以下代码错误,不能直接printf string。 int main ( ) { std :: string str1 = "test abc" ; printf ( "%s" , str1 ) ; } 正确代码应为: int main ( ) { std :: string str1 = "test abc" ; printf ( "%s" , str1 . c_str ( ) ) ; } printf输出字符串是针对char*或char[]的。即printf只能输出C语言中的内置数据,string不是c语言内置数据。 以上代码中str1是string类型的对象,并非单单只有字符串,其内还有许多用于操作的函数,于是&str1并非字符串“test abc”的首地址,而是str1这个对象的首地址。 但string类型的数据可以用cout直接输出: int main ( ) { std :: string str1 = "This is string." ; cout << str1 << endl ; } 对于char[]或char*定义的字符串可以直接printf。 如下代码正确: int main ( ) { char str1 [ ] = "123456" ; const char * str2 = "test" ; printf ( "%s\n" , str1 ) ;