相关疑难解决方法(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万
查看次数

如何在不刷新缓冲区的情况下打印换行符?

我正在尝试用c ++试图找出如何尽可能快地打印从0到n的数字.

起初我只是用循环打印所有数字:

for (int i = 0; i < n; i++) 
{
    std::cout << i << std::endl;
} 
Run Code Online (Sandbox Code Playgroud)

但是,我认为这会在输出的每一个数字之后刷新缓冲区,而且肯定需要一些时间,所以我试图先将所有数字打印到缓冲区(或实际上直到它已满,因为它似乎似乎自动刷新)然后立即冲洗它们.然而,似乎在刷新缓冲区之后打印\n就像std :: endl一样,所以我省略了它:

for (int i = 0; i < n; i++) 
{
    std::cout << i << ' ';
} 
std::cout << std::endl;
Run Code Online (Sandbox Code Playgroud)

这似乎比第一个例子快10倍.但是我想知道如何将所有值存储在缓冲区中并一次刷新所有值,而不是每次充满时都让它冲洗,所以我有几个问题:

  1. 是否可以在不刷新缓冲区的情况下打印换行符?
  2. 如何更改缓冲区大小以便我可以将所有值存储在其中并在最后刷新它?
  3. 这种输出文字的方法是否愚蠢?如果是这样,为什么,以及什么是更好的替代品呢?

编辑:似乎我的结果偏向于滞后系统(智能手机的终端应用程序).​​.....使用更快的系统,执行时间没有显着差异.

c++

7
推荐指数
1
解决办法
992
查看次数

标签 统计

c++ ×2

c++-faq ×1

coding-style ×1

iostream ×1