控制台上没有显示 \b 字符的输出

No output is displayed on console for \b character

以下代码片段在 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 它以保证在 close:

之前写入数据
std::cout << std::string(std::to_string(count).length(), '\b') << std::flush;
std::cout << ++count << std::flush;