相关疑难解决方法(0)

C++:"std :: endl"vs"\n"

许多C++书籍都包含这样的示例代码......

std::cout << "Test line" << std::endl;
Run Code Online (Sandbox Code Playgroud)

......所以我也一直这样做.但我已经看到很多来自像这样的开发人员的代码:

std::cout << "Test line\n";
Run Code Online (Sandbox Code Playgroud)

是否有技术上的理由偏爱另一个,或者仅仅是编码风格的问题?

c++ iostream coding-style c++-faq

530
推荐指数
10
解决办法
18万
查看次数

混合cout和printf以获得更快的输出

在进行了一些测试后,我发现它printf比它快得多cout.我知道它依赖于实现,但在我的Linux机器上printf速度提高了8倍.所以我的想法是混合两种打印方法:我想cout用于简单的打印,我打算printf用于生成大量输出(通常在循环中).只要在切换到其他方法之前不忘记刷新,我认为这样做是安全的:

cout << "Hello" << endl;
cout.flush();

for (int i=0; i<1000000; ++i) {
    printf("World!\n");
}
fflush(stdout);

cout << "last line" << endl;
cout << flush;
Run Code Online (Sandbox Code Playgroud)

这样好吗?

更新:感谢所有宝贵的反馈.答案摘要:如果你想避免棘手的解决方案,只需简单地不使用endl,cout因为它会隐式刷新缓冲区.请"\n"改用.如果你产生大量输出会很有趣.

c++ performance printf cout

48
推荐指数
6
解决办法
2万
查看次数

在c ++中刷新流的后果和优缺点

我最近阅读了一篇文章,其中指出使用比使用\n更好,std::endl因为它endl也会刷新流.
但当我找到关于该主题的更多信息时,我发现了一个网站,其中说明:

如果您处于必须避免缓冲的情况,可以使用std :: endl而不是'\n'

现在我的问题出现了:在哪种情况下最好不要写入缓冲区?因为我只看到了那种技术的优点.写入缓冲区不是更安全吗?因为它比硬盘驱动器小,所以它会比存储在HD上的数据更快地被覆盖(我不确定这是否属实).

c++ theory flush

25
推荐指数
5
解决办法
1693
查看次数

标签 统计

c++ ×3

c++-faq ×1

coding-style ×1

cout ×1

flush ×1

iostream ×1

performance ×1

printf ×1

theory ×1