在 C 中使用 std::flush 强制立即输出
在 C 程序中,经常会遇到将文本打印到使用 std::cout 的屏幕不会立即出现。这可能会出现问题,尤其是当文本旨在在执行长时间运行的计算时向用户提供实时反馈时。
要解决此问题,请考虑以下代码:
<code class="cpp">std::cout << "Beginning computations..."; // Output 1 computations(); std::cout << " done!\n"; // Output 2</code>
输出 #1 通知用户计算正在进行,而输出 #2 则表示计算已完成。然而,Output #1 可能要等到computations() 返回后才会出现在屏幕上。
幸运的是,有一个简单的解决方案:引入 std::flush。将 std::flush 插入代码中会强制 std::cout 缓冲区立即打印到屏幕上:
<code class="cpp">std::cout << "Beginning computations..." << std::flush;</code>
这确保了 Output #1 在computations() 调用之前显示,从而为用户提供立即视觉反馈。
或者,可以使用 std::cerr 代替 std::cout,它写入标准错误流。默认情况下,std::cerr 立即刷新其缓冲区,无需 std::flush 即可解决问题。
以上是如何在 C 中使用 `std::flush` 确保立即输出?的详细内容。更多信息请关注PHP中文网其他相关文章!