在开始而不是结束时使用 '\n' 有什么缺点吗?
Is there any drawback to using '\n' at the start instead of end?
大多数情况下,我看到人们在字符串末尾使用 \n
,但将 \n
放在开头对我来说更有意义,因为现在我不必跟踪将要打印的内容下一个。
例如-
std::cout<<"Some string\n"; //syntax 1
假设在这之后控件转到其他我不需要换行但使用此语法强制插入换行的功能,除非我可以提前考虑并跟踪是否需要下一行是否换行打印。
std::cout<<"\nSome string"; //syntax 2
但是通过使用第二种语法,我可以避免这样的事情,我只需要担心当前语句。
问题 - 使用这两种语法中的任何一种只是个人偏好,还是第二种语法比第一种语法有任何缺点?
您可以根据需要使用这些语法中的任何一种。对于需要打印字符串的循环和递归函数等重复语句,选择很重要。
然而,第一个语法 std::cout<<"\n String";
总是在插入新行后开始打印,如果它是打印的第一行,这可能不适合您的目的。
但我认为这只是个人喜好问题。
在 unix 系统中,当标准输出的内容打算作为另一个程序的输入时,最后打印 \n
通常意味着能够与更大的命令行实用程序集进行交互。
最终取决于你想用标准输出做什么。这就是为什么可以用两种方式编写的原因。
这根本不是“个人偏好”——这两个解决方案在语义上是不同的。当您的应用程序要求时,您会使用一个而不是另一个。
虽然在许多平台上都有一个关键点 \n
会导致刷新任何缓冲文本并输出文本。如果延迟 \n
,您可能无法立即看到输出,直到下一个 \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
大多数情况下,我看到人们在字符串末尾使用 \n
,但将 \n
放在开头对我来说更有意义,因为现在我不必跟踪将要打印的内容下一个。
例如-
std::cout<<"Some string\n"; //syntax 1
假设在这之后控件转到其他我不需要换行但使用此语法强制插入换行的功能,除非我可以提前考虑并跟踪是否需要下一行是否换行打印。
std::cout<<"\nSome string"; //syntax 2
但是通过使用第二种语法,我可以避免这样的事情,我只需要担心当前语句。
问题 - 使用这两种语法中的任何一种只是个人偏好,还是第二种语法比第一种语法有任何缺点?
您可以根据需要使用这些语法中的任何一种。对于需要打印字符串的循环和递归函数等重复语句,选择很重要。
然而,第一个语法 std::cout<<"\n String";
总是在插入新行后开始打印,如果它是打印的第一行,这可能不适合您的目的。
但我认为这只是个人喜好问题。
在 unix 系统中,当标准输出的内容打算作为另一个程序的输入时,最后打印 \n
通常意味着能够与更大的命令行实用程序集进行交互。
最终取决于你想用标准输出做什么。这就是为什么可以用两种方式编写的原因。
这根本不是“个人偏好”——这两个解决方案在语义上是不同的。当您的应用程序要求时,您会使用一个而不是另一个。
虽然在许多平台上都有一个关键点 \n
会导致刷新任何缓冲文本并输出文本。如果延迟 \n
,您可能无法立即看到输出,直到下一个 \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