【发布时间】:2017-01-08 19:50:14
【问题描述】:
我正在尝试编写一个程序,在其中读取文本文件,然后将文本文件中的每一行存储在字符串向量中。我想我可以打开文本文件,但是我注意到在我打开文本文件之后,在那之后的任何内容都不会执行。例如,我的 main 函数末尾有一个 cout 语句,当我输入不存在的文件名时会输出。但是,如果我输入的文件名确实存在,我不会从最后一个 cout 语句中得到任何输出。有谁知道这是为什么?谢谢!
int main()
{
vector<string>line;
string fileName = "test.txt";
ifstream myFile(fileName.c_str());
int i = 0;
int count = 0;
vector<string>lines;
cout << "test" << endl;
if (myFile.is_open())
{
cout << "test2" << endl;
while (!myFile.eof())
{
getline(myFile, lines[i],'\n');
i++;
}
myFile.close();
}
if (!myFile.is_open())
{
cout<< "File not open"<< endl;
}
myFile.close();
cout << "Test3" <<endl;
return 0;
}
【问题讨论】:
-
lines是一个空向量。lines[i]对于i的任何值都无效。你的程序就崩溃了。 -
你用
lines[i]写出向量的边界 -
使用
std::string逐行获取并将其推入向量中。 -
考虑通过调试器运行您的代码。调试器会显示 getline() 非常快地抛出异常。