MFC中读取txt

小宋朝 2014-04-09 04:31:49
我在MFC中使用CStdioFile和CArichive两个类读取一个txt文件,按行读取CArchive arRead.ReadString(str);
为了检验读取是否正确,我把读取的(CString类型)str显示到一个CEdit控件上,显示乱码。我在另一个C++工程中使用上面两个类读取文件时,显示没有问题,请问这个问题怎么解决。
...全文
131 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤影品茗 2014-04-09
  • 打赏
  • 举报
回复
选择你的工程右键属性,然后选择多字节字符集,搞定!!
zawgjzzl 2014-04-09
  • 打赏
  • 举报
回复
CFile myFile(_T("My__test__file.dat"), 
   CFile::modeCreate | CFile::modeReadWrite);
CString str1("String1"), str2("String2"), str;

// Create a storing archive.
CArchive arStore(&myFile, CArchive::store);

// Write str1 and str2 to the archive
arStore.WriteString(str1);
arStore.WriteString(_T("\n"));
arStore.WriteString(str2);
arStore.WriteString(_T("\n"));

// Close the storing archive
arStore.Close();

// Create a loading archive.
myFile.SeekToBegin();
CArchive arLoad(&myFile, CArchive::load);

// Verify the two strings are in the archive.
arLoad.ReadString(str);
ASSERT(str == str1);
arLoad.ReadString(str);
ASSERT(str == str2);
zawgjzzl 2014-04-09
  • 打赏
  • 举报
回复
引用
为了检验读取是否正确,我把读取的(CString类型)str显示到一个CEdit控件上
你完全可以用TRACE来查看
TRACE(_T("Thai: %S\n"), (LPCTSTR)str);
  • 打赏
  • 举报
回复
有可能是工程选择的语言环境不一样。unicode和多字符集是不一样的
赵4老师 2014-04-09
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧