以下代码错误,不能直接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);
printf("%s", str2);
}
运行结果为:
123456
test
改编自:
https://blog.csdn.net/qq_36561697/article/details/81182408
来源:CSDN
作者:Gianna K
链接:https://blog.csdn.net/weixin_44208324/article/details/104590878