VC++求助!!CStdioFile按行读文件出错

我在网上找了一段这样的代码:
CString strText = "";
CString szLine = "";

//打开文件
CStdioFile file;
file.Open("Book1.txt",CFile::modeRead);

//逐行读取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}
file.Close();
AfxMessageBox(strText);

我需要的功能是读一个TXT文件,然后按行存储到string数组中。
我的TXT是这样的格式:
1101:莘庄,1-1;
1102:外环路,10-10;
1103:莲花路,20-20;
1104:锦江乐园,30-30;

可是messagebox最后出来的都是一个问号,请问这是为什么,非常感谢!

第1个回答  推荐于2016-06-06
目测上述代码没有发现什么问题,建议按照如下方式来调试。
在while循环内部的“strText += szLine;”打上断点,单步执行时,监视strText的值。
/////////////////////////////////////////////////////////////////////
刚才试验了一下,在一个按钮的单击响应函数里面写了如下代码:
void CFileTestDlg::OnTestfile()
{
// TODO: Add your control notification handler code here
CString strText = "";
CString szLine = "";

//打开文件
CStdioFile file;
if (!file.Open("test.txt",CFile::modeRead))
{
AfxMessageBox("无法打开文件!");
return;
}
//逐行读取字符串
while( file.ReadString( szLine ) )
{
strText += szLine;
}
file.Close();
AfxMessageBox(strText);
}
/////////////////////////////////////////////////////////////////////
结果:AfxMessageBox能够读出文本中的内容。
至于你为什么读不出内容,我想,可能有以下几个原因。
1.代码中缺少是否打开文件的判断,有可能打开文件失败。
2.注意此处待读文件的路径为相对路径,txt文件需要放在工程目录下面。
请设置断点后,单步调试确认。本回答被提问者采纳
相似回答