c++ - 控制台上不显示 \b 字符的输出
问题描述
以下代码片段在 while 循环的每次迭代中都没有打印任何内容。实际输出仅在程序执行结束时打印。这个问题仅在 CentOS 中遇到,因为在 Windows 中代码片段按预期工作。
std::cout << "Test \\b functionality: ";
int count = 0;
std::cout << count;
while (count < 10)
{
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << std::string(std::to_string(count).length(), '\b');
std::cout << ++count;
}
删除“ std::this_thread::sleep_for(std::chrono::seconds(1));
”语句 会在每次迭代时打印输出。
预期输出:在每次迭代控制台上应该在擦除旧计数值后输出新的计数值。换句话说,控制台应该显示计数变量的最新值。
解决方案
std::cout
是一个缓冲流,因此您必须flush
使用它来保证在 a 之前写入数据close
:
std::cout << std::string(std::to_string(count).length(), '\b') << std::flush;
std::cout << ++count << std::flush;
推荐阅读
- flutter - 有谁知道如何使用颤振创建贝宝捐赠按钮?
- java - 同时比较字符串 AND 和 OR
- laravel - laravel - 调整图像大小并保存到 Amazon S3
- java - 一次从三个表中删除
- reactjs - freecodecamp 反应 renderToServer
- java - 我的 sql :java.math.BigInteger 不能转换为 java.lang.Long
- r - 在嵌套结构中总结 - R
- angular - 产品配置文件性能不佳
- linux - 如何在具有部分文件名的目录中查找最新创建的 .gz 文件的文件名
- angular - 角度路径中的导航错误