下面的代码片段会导致错误的结果:
void CTesterDlg::OnClickedButtonTest()
{
CStdioFile myfile;
CString strLine1;
CString strLine2;
myfile.Open(_T("D:\Test1.csv"), CFile::modeWrite | CFile::modeCreate);
strLine1 = L"01001,01001,2017-09-22,09:38:18.6,Alarm,STEERING PORT A – NO DATA RECEIVED,,,,0.0,Normal,0,1,0, ,127,0\n";
strLine2 = L"Monkey, Animal\n";
myfile.WriteString(strLine2);
myfile.WriteString(strLine1);
myfile.WriteString(strLine2);
myfile.Close();
}
查看 Test1.csv 文件时
Monkey, Animal
01001,01001,2017-09-22,09:38:18.6,Alarm,STEERING PORT A
Monkey, Animal
strLine1
之后的所有内容
"..PORT A" " – NO> DATA RECEIVED,,,,0.0,Normal,0,1,0, ,127,0\n"
被删除了? 欢迎任何想法。
最佳答案
您遇到字符串编码问题。请注意,源代码中的 –
是短破折号(Unicode 代码点 U+2013),而不是连字符减号。将其更改为连字符减号(Unicode 代码点 U+002D),您的文本应显示在输出文件中。
关于c++ CStdioFile::WriteString 给出不正确的文件输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46364194/