c++ - 从卡在循环中而不是读取的文件输出?

标签 c++ file loops

所以下面这段代码底部的 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();
}

最佳答案

getlineoperator>> 都从文件中提取,但 getline 一直读取到 '\n'(或您指定的任何字符),而operator>> 读取直到一个空格。此外,operator>> 将在流中留下 '\n' 导致下一次调用 getline 时不会读取任何内容。

阅读getlineoperator>>有关更多详细信息的文档(这些是链接)。

此外,发布问题/答案存储在文件中的格式,因为您的代码将如何运行非常依赖于此。如果您只是期待问题和答案的交替行,只需使用 getline 并忘记运算符。

希望这对您有所帮助。

关于c++ - 从卡在循环中而不是读取的文件输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874426/

相关文章:

c++ - 函数范式中嵌套循环的迭代过程

C程序使用不在循环中工作的系统调用从文件中读取替代字符

c - 我怎样才能告诉 Linux 进程使用一个文件作为它的整个堆?

java - 使用 PDDocument 在 java 中创建 PDF 文件会导致 PDF 文件损坏

c++ - 为什么gdb找不到源文件

excel - 删除具有两个条件的行的最有效方法

c++ - String Verifier 字符循环无法正常工作

c++ - "Undefined struct"创建对象时出错

c++ - 以原子方式读取非原子变量?

c++ - 为什么创建 std::runtime_error 会重置 WSAGetLastError?