Dav*_*nan 105
考虑写入文件.这是一项昂贵的操作.如果在代码中一次写入一个字节,那么每次写入一个字节将会非常昂贵.因此,提高性能的常用方法是将要写入的数据存储在临时缓冲区中.只有当有大量数据时,缓冲区才会写入文件.通过推迟写入和一次写入大块,性能得到改善.
考虑到这一点,刷新缓冲区是将数据从缓冲区传输到文件的行为.
这是通过删除缓冲区中的所有内容来清除缓冲区还是通过输出缓冲区中的所有内容来清除缓冲区?
后者.
tc.*_*tc. 20
你引用了答案:
可以显式刷新输出缓冲区以强制写入缓冲区.
也就是说,您可能需要"刷新"输出以使其被写入底层流(可能是文件,或者在列出的示例中,即终端).
通常,stdout/cout是行缓冲的:在您写入换行符或显式刷新缓冲区之前,输出不会被发送到OS.优点是类似的东西std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
只会导致一个写入底层"文件"而不是六个,这对性能要好得多.缺点是代码如:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1); // or something similar
}
std::cout << "\n";
Run Code Online (Sandbox Code Playgroud)
将立即输出.....
(对于确切的sleep
实现,请参阅此问题).在这种情况下,您需要额外的一个<< std::flush
以确保显示输出.
读取cin
刷新,cout
因此您不需要显式刷新来执行此操作:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
49308 次 |
最近记录: |