我正在尝试按以下方式打印字符串:
int main(){
string s("bla");
printf("%s \n", s);
.......
}
但我得到的只是随机的胡言乱语。
你能解释一下原因吗?
答案 0 :(得分:25)
因为%s
表示char*
,而不是std::string
。使用s.c_str()
或更好地使用,iostreams:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("bla");
std::cout << s << "\n";
}
答案 1 :(得分:18)
您需要使用c_str来获取与字符串内容等效的c-string,因为printf
不知道如何打印字符串对象。
string s("bla");
printf("%s \n", s.c_str());
相反,你可以这样做:
string s("bla");
std::cout<<s;
答案 2 :(得分:1)
当我从以下地方切换时,我设法使用“cout”打印字符串:
#include <string.h>
到
#include <string>
我希望我能理解为什么这很重要......
答案 3 :(得分:-1)
为什么不使用
char s[]="bla";