2012-11-14 138 views
3

我在打印一個字符串時出於調試目的使用了一個問題。用fprintf打印一個字符串

我創建的字符串,像這樣:

//checker is int 
std::stringstream buttonx; 
buttonx << "Button" << checker << "_x"; 

現在,我嘗試將它打印到我error.txt文件


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

輸出是:

,æ0

它每次都不一樣。我不確定發生了什麼事情,希望有人能夠解釋這個錯誤?

回答

7

fopen是純C並且不能處理std :: string。您需要輸入一個char*,您可以通過對字符串進行調用.c_str()訪問,就像這樣:

fprintf(p, "%s", buttonx.str().c_str()); 
+4

或者,使用'std :: ofstream'作爲C++神的意圖。 – cHao

+0

std :: ofstream語法怎麼看? – Sir

+2

@Dave:'std :: ofstream f(「error.txt」); f << buttonx.str();'。或者,如果你沒有給文件寫任何東西,甚至可以使用'std :: ofstream(「error.txt」)<< buttonx.str();'。 – cHao

0

功能fprintf中想要一個空結尾的字符串(C字符串);你需要c_str()而不是你的:

buttonx.c_str()