c ++ CStdioFile :: WriteString提供不正确的文件输出

时间:2017-09-22 11:54:27

标签: c++ mfc

下面的代码段会导致错误的结果:

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文件时的

  

猴子,动物
  01001,01001,2017-09-22,09:38:18.6,报警,转向港A   猴子,动物

之后strLine1的所有内容
  

" .. PORT A" " - 不是> DATA RECEIVED ,,,, 0.0,Normal,0,1,0 ,, 127,0 \ n"

已删除? 欢迎任何想法。

1 个答案:

答案 0 :(得分:2)

您遇到字符串编码问题。请注意,源代码中的是En-dash(Unicode代码点U + 2013),而不是连字符减号。将其更改为Hyphen-Minus(Unicode代码点U + 002D),您的文本应显示在输出文件中。