VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 255|回复: 10

[已解决]ReadString读取文本为什么只读了一行就退出不读了?

[复制链接]
95_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-17 07:22:12 | 显示全部楼层 |阅读模式
本帖最后由 像风一样自由 于 2020-4-17 20:20 编辑

文本内容:
123
456
789

我的代码是这样的:

        CStdioFile mFile;
       
        if (mFile.Open(_T("D:\\123.txt"), CFile::modeRead))
        {
                CString cRead;
                int count = 0;

                while (mFile.ReadString(cRead))
                {
                        count++;
                }

                mFile.Close();
        }

ReadString不是读取一行就自动移到下一行的吗?但是这个循环就运行了一次就退出了,看了网上很多贴,都找不到问题所在,请各位大佬解惑!
最佳答案
94_avatar_small
2020-4-18 14:54:05
像风一样自由 发表于 2020-4-17 20:48
MessageBox弹出来一次,再下一步循环就结束了。我是想实现点击Button2,然后逐行读取文本的内容。是 ...

你的文件是不是编码不是utf8的
如果不是改一下试试




上一篇:【实用C++】零基础入门教程--第35课的视频教程中 有个疑问
下一篇:问一下这道链表的题目,谢谢大家!
57_avatar_middle
最佳答案
21 
在线会员 发表于 2020-4-18 11:42:25 | 显示全部楼层
像风一样自由 发表于 2020-4-17 20:48
MessageBox弹出来一次,再下一步循环就结束了。我是想实现点击Button2,然后逐行读取文本的内容。是 ...

不存在读取文本的事件不能再button响应事件里写的说法。而是你文件内容是有问题的。你可以使用二进制文本查看器查看一下你的123.txt。
无标题.png

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
95_avatar_small 像风一样自由 + 1 + 1

查看全部评分

57_avatar_middle
最佳答案
21 
在线会员 发表于 2020-4-17 13:59:17 | 显示全部楼层
代码应该没有问题,我的是window10x64下使用vs2015x86编译的。
test.png
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-17 14:56:28 | 显示全部楼层
对,没错
要调试的话把代码改成
        CStdioFile mFile;

        if (mFile.Open(_T("D:\\123.txt"), CFile::modeRead))
        {
                CString cRead;
                int count = 0;

                while (mFile.ReadString(cRead))
                {
                        count++;
                        MessageBox(cRead);
                }
                mFile.Close();
        }
}
加个MessageBox看看,回显的是什么
95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-17 20:39:02 | 显示全部楼层
JLDawson 发表于 2020-4-17 13:59
代码应该没有问题,我的是window10x64下使用vs2015x86编译的。

请问能看下你的代码全体吗?
95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-17 20:48:23 | 显示全部楼层
冰淇淋 发表于 2020-4-17 14:56
对,没错
要调试的话把代码改成
        CStdioFile mFile;

ReadString读取文本为什么只读了一行就退出不读了?

MessageBox弹出来一次,再下一步循环就结束了。我是想实现点击Button2,然后逐行读取文本的内容。是不是这个类不能在按钮的事件内写?
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-18 14:54:05 | 显示全部楼层    本楼为最佳答案   
bestAnswer
像风一样自由 发表于 2020-4-17 20:48
MessageBox弹出来一次,再下一步循环就结束了。我是想实现点击Button2,然后逐行读取文本的内容。是 ...

你的文件是不是编码不是utf8的
如果不是改一下试试
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-18 14:55:24 | 显示全部楼层
像风一样自由 发表于 2020-4-17 20:48
MessageBox弹出来一次,再下一步循环就结束了。我是想实现点击Button2,然后逐行读取文本的内容。是 ...

把代码和文件一起打包发一下吧,仔细看看

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
95_avatar_small 像风一样自由 + 1 + 1

查看全部评分

95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-18 18:33:27 | 显示全部楼层
冰淇淋 发表于 2020-4-18 14:54
你的文件是不是编码不是utf8的
如果不是改一下试试

谢谢谢谢,确实是这个问题,我文件创建出来编码格式默认就是UTF16的,改成UTF8之后就可以一直往下读了。感觉UTF8兼容性还是好一点,这些字符集格式好复杂啊。。。ReadString读取文本为什么只读了一行就退出不读了?还是感谢你!
95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-18 18:43:24 | 显示全部楼层
本帖最后由 像风一样自由 于 2020-4-18 18:45 编辑
JLDawson 发表于 2020-4-18 11:42
不存在读取文本的事件不能再button响应事件里写的说法。而是你文件内容是有问题的。你可以使用二进制文本 ...


是的,我文件格式有问题,这两个用UE看差别好大,前面是编码格式为UTF16,后面是UTF8:

ReadString读取文本为什么只读了一行就退出不读了?

ReadString读取文本为什么只读了一行就退出不读了?
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-19 13:44:05 | 显示全部楼层
像风一样自由 发表于 2020-4-18 18:43
是的,我文件格式有问题,这两个用UE看差别好大,前面是编码格式为UTF16,后面是UTF8:

解决了就好,不客气呢~
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-8-12 23:42

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表