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

No output is displayed on console for  character

本文关键字:字符 输出 控制台 显示      更新时间:2023-10-16

以下代码片段在 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;