简而言之
如果你不在结尾处加上换行符,你会遇到cout的问题!
详细地
尝试将 an 添加endl
到您的cout
(例如std::cout << data << std::endl
)中,或使用以下说明激活 cout 的“立即输出”(不需要先换行)。
std::cout << std::unitbuf;
完整示例:
std::cout << std::unitbuf;
std::cout << data;
// ... a lot of code later ...
std::cout << "it still works";
旁注:顾名思义,这与输出缓冲有关unitbuf
(如果您想查看此处实际发生的情况)。
这样也可以重写当前行,这是一个很好的例子,你需要这个;-)
实际例子
using namespace std;
cout << "I'm about to calculate some great stuff!" << endl;
cout << unitbuf;
for (int x=0; x<=100; x++)
{
cout << "\r" << x << " percent finished!";
// Calculate great stuff here
// ...
sleep(100); // or just pretend, and rest a little ;-)
}
cout << endl << "Finished calculating awesome stuff!" << endl;
评论:
- \r (回车)将光标放在行的第一个位置(不换行)
- 如果您在之前写的行中写了较短的文本,请确保在末尾用空格字符覆盖它
在过程中的某处输出:
I'm about to calculate some great stuff!
45 percent finished!
..一段时间后:
I'm about to calculate some great stuff!
100 percent finished!
Finished calculating awesome stuff!