使用fprintf打印字符串

Sir*_*Sir 3 c++ stl stdio

我遇到打印字符串的问题,我将其用于调试目的.

我像这样创建字符串:

//checker is int 
std::stringstream buttonx; 
buttonx << "Button" << checker << "_x";
Run Code Online (Sandbox Code Playgroud)

现在我尝试将其打印到我的error.txt文件中


FILE * p;
p = fopen ("error.txt","w");
fprintf(p, "%s" , buttonx.str());
fclose(p);
Run Code Online (Sandbox Code Playgroud)

输出是:

,æ0

它每次都不同.我不确定最新情况是否有人可以解释这个错误?

Chr*_*ris 7

fopen是普通的C,无法处理std :: string.你需要输入一个char*,你可以通过调用.c_str()字符串来访问,如下所示:

fprintf(p, "%s", buttonx.str().c_str());
Run Code Online (Sandbox Code Playgroud)

  • 或者,使用`std :: ofstream`作为C++神的意图. (4认同)
  • @Dave:`std :: ofstream f("error.txt"); f << buttonx.str();`.或者,如果你没有在文件中写任何其他东西,甚至`std :: ofstream("error.txt")<< buttonx.str();`也许可以. (2认同)