程序不会在 exit() 函数之前打印行吗?

Eri*_*ney 1 c++ fstream iostream

我有一个用 C++ 编写的学校小项目,我们必须解决一些错误,并在发生错误时退出程序。基本上,在 else 语句中,当表达式被评估为 false 时,就好像它不会将错误写入文件。如果我将它输出到控制台(通过 cout)而不是将其写入文件,它工作得很好,但是当我尝试将它写入输出文件时,它不起作用。基本上,这就是我的问题。我的教授要求所有输出都写入文件,这就是我不能使用 cout 的原因。那么为什么它会将其输出到控制台,而不是文件呢?

PS 我正在将其他内容输出到文件中,并且工作正常,因此为了记录,我认为它已缩小到 else 语句中的小代码块。

if(tempUnit == 'C' || tempUnit == 'F')
    {
      if(tempUnit == 'F')
      {
        temp = convertTemp(temp, tempUnit);
      }

      temps[a] = temp;

      printTemp(outputFile, tempUnit, temp);
      printTimestamp(outputFile, humanDate);

      outputFile << endl;

    }
    else{
      // this is where it doesnt work
      outputFile << "Error. Incorrect temperature unit, must be " << 
      "either a capital C or a capital F. Program ended.";
      exit(0);
    }
Run Code Online (Sandbox Code Playgroud)

Zac*_*and 5

您需要在退出程序之前刷新缓冲区。

outputFile << "Error. Incorrect temperature unit, must be either a capital C or a capital F. Program ended." << std::flush;
Run Code Online (Sandbox Code Playgroud)

或者

outputFile << "Error. Incorrect temperature unit, must be either a capital C or a capital F. Program ended." << std::endl;
Run Code Online (Sandbox Code Playgroud)