微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在开头而不是结尾使用 '\n' 有什么缺点吗?

如何解决在开头而不是结尾使用 '\n' 有什么缺点吗?

大多数情况下,我看到人们在字符串末尾使用 \n,但将 \n 放在开头对我来说更有意义,因为现在我不必跟踪接下来要打印的内容。 例如-

std::cout<<"Some string\n";  //Syntax 1

假设在此之后控件转到其他一些我不需要换行的函数,但使用此语法强制插入换行,除非我可以提前考虑并跟踪是否需要打印下一行换行与否。

std::cout<<"\nSome string";  //Syntax 2

但是通过使用第二种语法,我可以避免这样的事情,我只需要担心当前的语句。

问题 - 使用这两种语法中的任何一种只是个人偏好还是第二种语法比第一种语法有任何缺点?

解决方法

这根本不是“个人偏好”——这两种解决方案在语义上是不同的。当您的应用程序要求时,您可以使用其中一种。

一个关键点是在许多平台上 \n 导致任何缓冲文本被刷新并输出文本。如果您延迟 \n,您可能不会立即看到输出,直到下一个 \n 这可能不是确定性的或不及时的。

,

您可以根据需要使用这些语法中的任何一种。在需要打印字符串的循环和递归函数等重复语句的情况下,选择很重要。

然而,第一个语法 std::cout<<"\n String"; 将始终在插入新行后开始打印,如果它是打印的第一行,这可能不适合您的目的。

但我相信这只是个人喜好问题。

,

在 unix 系统中,当标准输出的内容打算作为另一个程序的输入时,最后打印 \n 通常意味着能够与更多的命令行实用程序进行交互。

最终取决于你想用标准输出做什么。这就是为什么可以两种方式编写。

,

这取决于您编写输出的上下文。

语法 1

如果你想确保你的输出以一个新行开始并且你无法判断光标是否在一行的开头,你会喜欢语法 1。

没有'\n'的例子:

Output you don't control
----------------------------
Value 1 | Value 2 | Value 3Some string of your function.

'\n' 示例:

Output you don't control
----------------------------
Value 1 | Value 2 | Value 3 
Some string of your function.

语法 2

另一方面,如果您已完成输出,最好以新行结束,这样下一个输出就不必关心您将光标留在什么状态。

没有'\n'的例子:

Some string of your function.Output you don't control
----------------------------
Value 1 | Value 2 | Value 3 

'\n' 示例:

Some string of your function.
Output you don't control
----------------------------
Value 1 | Value 2 | Value 3 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。