猿问

“\ n”或“\ n”或std :: endl到std :: cout?

“\ n”或“\ n”或std :: endl到std :: cout?

自从我std::endl在写作时停止使用结束行std::cout并开始使用以来已经很多年了"\n"

但现在我开始看到更多的代码片段'\n',我开始想知道什么是最好的。

除了显而易见的是一个字符串,另一个字符,使用它有任何好处:

std::cout << variable << '\n';

在此:

std::cout << variable << "\n";

迟到:

当我问这个问题时,我似乎认为换行'\n'刷新了缓冲区。现在我知道这取决于

默认情况下std::cin,绑定到旧的C stdin FILE*流,并std::cout绑定到stdout。新线上的冲洗来自这种搭售。默认情况下stdout,如果连接到终端,则进行行缓冲。这意味着新行将刷新其缓冲区。因此,当使用打印换行符std::cout时,将导致stdout刷新。

如果stdout未连接到的终端(例如,输出已经被重定向或用管道输送),或者如果之间的联系std::coutstdout被打破,则换行符将不刷新任何东西。


神不在的星期二
浏览 389回答 3
3回答

临摹微笑

他们做不同的事情。"\n"输出换行符(在适当的平台特定表示中,因此它"\r\n"在Windows上生成),但std::endl执行相同操作并刷新流。通常,您不需要立即刷新流,这只会让您的性能降低,因此大多数情况下都没有理由使用std::endl。

萧十郎

没有最好的。你用你需要的东西:'\ n' - 结束这条线“一些字符串\ n” - 一些字符串后面的行结束std::endl&nbsp;- 结束线路并冲洗流
随时随地看视频慕课网APP
我要回答