for (int i = 0; i < n; i++) {
CString a = m_StudentList.GetItemText(i, 0);
CString b = m_StudentList.GetItemText(i, 1);
CString c = m_StudentList.GetItemText(i, 2);
CString d = m_StudentList.GetItemText(i, 3);
file << a<< "," <<b << "," << c << ","<< d<< "\n";
}為什么這段代碼輸出到檔案中,a,b,c,d都是地址而不是字串
輸出
0911DA20,0911DC68,0911DEB0,0911E0F8
uj5u.com熱心網友回復:
file << (LPCTSTR)a<< "," << (LPCTSTR)b << "," << (LPCTSTR)c << ","<< (LPCTSTR)d<< "\n";還要注意工程字符集,如果是Unicode的話file要使用wfstream
uj5u.com熱心網友回復:
加了,還是不行,輸出的還是數字和字母,沒辦法輸出字串CString A("abc");
cout << (LPCTSTR)A;
像這個簡單的運行的結果還是001C1D90
uj5u.com熱心網友回復:
把cstring轉成string。然后再coutuj5u.com熱心網友回復:
感覺是應該CString 轉成stringuj5u.com熱心網友回復:
剛才試了下, vc6下輸出正常啊CString A("abc");
cout << (LPCTSTR)A;
uj5u.com熱心網友回復:
乍看起來c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在輸入、輸出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf簡單,不用格式控制符!但是不用格式控制符,輸入輸出恰好是你期望的格式的時候好說;等到輸入輸出不是你期望的格式的時候,你就會覺得還是用格式控制符更方便、更靠譜。
摒棄cin、cout、ifstream、ofstream、istringstream、ostringstream!
使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。
uj5u.com熱心網友回復:
如果你用C++的fstream類讀寫檔案,就用string/wstring型別的,就別用CString型別了,比如:
#ifdef _UNICODE
wfstream file;
#else
fstream file;
#endif
file.open(TEXT("F:\\11.txt"), fstream::out);
#ifdef _UNICODE
wstring strText(L"Hello, World!");
#else
string strText("Hello, World!");
#endif
file<<strText.c_str()<<endl;
file.close();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/139737.html
標籤:基礎類
上一篇:C++運行出錯:exception in mail.exe: 0xC0000005: Access Violation.
