所以下面这段代码底部的 while 循环只是不断循环 我在添加行之前让它工作
questionFile >> answersArray[i];
这一行似乎打破了它,因此不再有任何内容写入 questionsArray,我对此感到很困惑,因此将不胜感激。
ifstream questionFile;
int i = 0;
switch (x){
case 1:
questionFile.open("Topic1 Questions.txt", ios::app);
break;
case 2:
questionFile.open("Topic2 Questions.txt", ios::app);
break;
case 3:
questionFile.open("Topic3 Questions.txt", ios::app);
break;
case 4:
questionFile.open("Topic4 Questions.txt", ios::app);
break;
}
if (!questionFile)
{
cout << "Cannot load file" << endl;
}
else
{
if (questionFile.peek() != ifstream::traits_type::eof()) {
while (!questionFile.eof())
{
getline(questionFile, questionsArray[i]);
questionFile >> answersArray[i];
i++;
}
}
questionFile.close();
}
最佳答案
getline
和 operator>>
都从文件中提取,但 getline
一直读取到 '\n'(或您指定的任何字符),而operator>>
读取直到一个空格。此外,operator>>
将在流中留下 '\n' 导致下一次调用 getline
时不会读取任何内容。
阅读getline
和 operator>>
有关更多详细信息的文档(这些是链接)。
此外,发布问题/答案存储在文件中的格式,因为您的代码将如何运行非常依赖于此。如果您只是期待问题和答案的交替行,只需使用 getline
并忘记运算符。
希望这对您有所帮助。
关于c++ - 从卡在循环中而不是读取的文件输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874426/