2 qq 28254507 qq_28254507 于 2016.02.29 22:25 提问

求助!MFC ReadString()的问题
 void RichEditView::ReadArticle(CString strName)
{
    CString content = "";
    CStdioFile File;
    CString fileName = strName;
    if (File.Open(fileName, CFile::modeRead | CFile::typeBinary))
    {
        File.SeekToBegin();
        CString str;
        File.ReadString(str); // A null character ('\0') is appended.
        while (File.ReadString(str))
        {
            content += str;
            AfxMessageBox(str);
        }
        File.Close();
    }
    else
        AfxMessageBox("读取失败!");
    ::SetWindowText(this->GetRichEditCtrl().m_hWnd, content);
}

每次第一遍读取就是正常的,到第二遍读取就出问题了。
比如本来文本是"sssss",读取第一遍正常,第二遍就空白了,但是我打开文本看是
图片说明
这里说明一下,我这里读取是从第二行开始,第一行是另一个视图显示,这个函数究竟哪里出问题了?

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.01 07:45
已采纳

第二次读取的时候文件是否路径变化,或者数据是否被处理。

qq_28254507
qq_28254507 文本内容有变化,但是我是只读啊。为什么会改变文本内容?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.02.29 22:32

第二遍读取就出问题了
你说的第二遍是什么意思?

qq_28254507
qq_28254507 我这里是双击消息函数会读取某个路径,如果我双击读取一次,再双击重复读取显示一次就会出现问题
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
VS2012 MFC CStdioFile ReadString 处理UTF8文档乱码的方法
CStdioFile 的ReadString读写UTF8会出现乱码现象。需要转换。//转换函数void CharToUTF8(CString &str){    char *szBuf = new char[str.GetLength() + 1];//注意“+1”,char字符要求结束符,而CString没有memset(szBuf, '\0',str.GetLength());int ...
MFC中简单的文件操作writeString,readString
mfc的文件操作writerstring和readstring的用法
CStdioFile之ReadString()与WriteString()注意事项
CStdioFile CObject  └CFile     └CStdioFile 一个CStdioFile对象代表一个用运行时函数fopen打开的C运行时流式文件。 流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。 文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A)写入一个文本方式的CStdioFi
如何使用CStdioFile::ReadString来读文件
点评:对于一般文件的读取,建议还是用CStdioFile来进行行的读与写操作,这样非常方便的. [问题提出]   一数据文件一行一条记录,我用file.ReadString()一次读一行,并对读取的数据做一些处理;   请问:while(文件还没到结尾) { file.ReadString(); ... } 文件还没到结尾如何判断?如果,到了指定位置不读了,过一会儿再读
CStdioFile.ReadString读取中文产生乱码解决方法
首先需要明确:1、CStdioFile对Unicode的支持不好,最好采用CFile进行读取操作;2、在Unicode环境下ReadString按char读取,并填入Unicode的CString变量中。对于包含中文的ANSI文本,采用File.ReadString读取,如果不进行转换一定会产生乱码。 经过在CSND的一番折腾,找到解决办法如下: void CTestDlg::Re
CStdioFile的ReadString读入中英文的总结(unicode-ucs2/utf8-无bom/ansi) .
文章讨论的前提:使用ReadString来读取字符串 utfi/ansi情况下,不能使用binary来打开,因为这种模式下,一次按照TCHAR的大小,读取两个字符,结束符号0d的话,需要读取到0x 0d 00才会认为是读取一行结束。而我们知道untf8/ansi情况存储的话,里面是没有0x00存在的。 utf8/ansi情况下,使用typetext打开,可以把字符读入到CString里面,但存
cvReadString函数
功能:从文本文件的节点处寻找字符串。   函数形式: const char* cvReadString( const CvFileNode* node,const char* default_value CV_DEFAULT(NULL) )     参数列表: node:文件中的节点. default_value:节点为NULL返回的值.   程序应用示例:   #incl
使用CStdioFile::ReadString来逐行读取文件
ReadString本身就是一次读取一行,非常方便。直接上函数:{   CStdioFile file;     CString str;   file.Open("file.txt",CFile::modeRead);   while(file.ReadString(str))   {      //控件写入数据      //SetDlgItemText(IDC_EDIT, ctr);   }...
ReadString在UNICODE/多字节下中文乱码的解决办法
 用CStdioFile类中的ReadString()方法可以从文件中读取一行,但是在Unicode下,读取的内容有误,同时也无法将中文利用WriteString()写入文件。原因就在于读取文件时是按照 ascii 方式读取的,而直接设定字符串时,是按照unicode 方式读取的。 若使得读取文件时按照 Unicode 方式读取,则需要添加: setlocale( LC_CTYPE, "
ReadString问题
使用MFC的CStdioFile::ReadString时碰到的一个很奇怪的问题!