字符串上的“printf”打印出乱码

时间:2010-09-03 10:12:45

标签: c++ string printf

我正在尝试按以下方式打印字符串:

int main(){
    string s("bla");
    printf("%s \n", s);
         .......
}

但我得到的只是随机的胡言乱语。

你能解释一下原因吗?

4 个答案:

答案 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";