读取TXT文件的时候出现乱码,怎么解决呀?

webberC 2009-08-24 03:34:05
这是我的代码
CCHAR sRead[8];
CFile mFile(L"HotKey.txt",CFile::modeRead);
if(mFile.GetLength()<8)
return TRUE;
for (int i = 0;i < 9;i++)
{
mFile.Read(sRead,8);
CRunData::HotKeyPage1[i]=sRead;
}
mFile.Read(sRead,8);

mFile.Close();
其中CRunData::HotKeyPage1[i]为CString类型

下面是我的文件内容:
SSR HDG SPD LEFT RIGHT APCH TWR TOFF
...全文
335 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
webberC 2009-08-24
  • 打赏
  • 举报
回复
多谢各位帮助啊,是可以了,哈哈
雪影 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 webberc 的回复:]
回2楼:
用StdioFile的话,我该怎么样把文件中的值赋给HotKeyPage1[i]呢?

[/Quote]
CStdioFile StdioFile; 
CString strText;
if( StdioFile.Open("HotKey.txt", CFile::modeRead) == TRUE )
{
StdioFile.SeekToBegin();
for(int i=0; StdioFile.ReadString(strText) == TRUE && i<9; i++ )
{
CRunData::HotKeyPage1[i]=sRead;
}
StdioFile.Close();
}
skynfly 2009-08-24
  • 打赏
  • 举报
回复
这样好像就行
CCHAR sRead[9];
CFile mFile(L"HotKey.txt",CFile::modeRead);
if(mFile.GetLength() <8)
return TRUE;
for (int i = 0;i < 9;i++)
{
memset(sRead,0,9);
mFile.Read(sRead,8);
CRunData::HotKeyPage1[i]=sRead;
}
memset(sRead,0,9);
mFile.Read(sRead,8);

mFile.Close();
MoXiaoRab 2009-08-24
  • 打赏
  • 举报
回复
你可以一下子全部读出来,然后用CString的Splite来进行切分嘛
MoXiaoRab 2009-08-24
  • 打赏
  • 举报
回复
不需要后移
CStdioFile Read的时候,自己会向后移动读指针,不需要Seek
贪玩的老鼠 2009-08-24
  • 打赏
  • 举报
回复
CCHAR sRead[8];
要定义成CCHAR sRead[9];
skynfly 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 webberc 的回复:]
这是我的代码
CCHAR sRead[8];
CFile mFile(L"HotKey.txt",CFile::modeRead);
if(mFile.GetLength() <8)
return TRUE;
for (int i = 0;i < 9;i++)
{
mFile.Read(sRead,8);
CRunData::HotKeyPage1[i]=sRead;
}
mFile.Read(sRead,8);

mFile.Close();
其中CRunData::HotKeyPage1[i]为CString类型

下面是我的文件内容:
SSR HDG SPD LEFT RIGHT APCH TWR TOFF
[/Quote]

是不是要把这个数组定义9个

CCHAR sRead[9];
sRead[8] = '\0';或者每次循环加个 memset(sRead,0,9);
要不CString后面就会是乱码了吧
webberC 2009-08-24
  • 打赏
  • 举报
回复
我每次读到都是8的长度,内容怎么会一样呢?
用SEEK能给个例子吗?
谢谢!
dayong576 2009-08-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 webberc 的回复:]
回2楼:
用StdioFile的话,我该怎么样把文件中的值赋给HotKeyPage1[i]呢?

[/Quote]
按照你的需要赋值就可以了,别告诉我你不会字符串的操作。
ljz888666555 2009-08-24
  • 打赏
  • 举报
回复
我怎么看你每次读的内容都一样,如果是读取数行就用楼上的方法,
如果整个内容都在一行的话,用Seek进行确定内容。
webberC 2009-08-24
  • 打赏
  • 举报
回复
回2楼:
用StdioFile的话,我该怎么样把文件中的值赋给HotKeyPage1[i]呢?
lygfqy 2009-08-24
  • 打赏
  • 举报
回复
先看一下16进制的值对不对吧
另外注意一下是否unicode的问题
dayong576 2009-08-24
  • 打赏
  • 举报
回复
CStdioFile StdioFile;
CString strText;
if( StdioFile.Open("HotKey.txt", CFile::modeRead) == TRUE )
{
StdioFile.SeekToBegin();
while ( StdioFile.ReadString(strText) == TRUE )
{
}
StdioFile.Close();
}

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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