程序结束时 C++ 控制台输出未切换到新行 [复制]

C++ console output not switching to a new line when the program ends [duplicate]

提问人:Bullfrog Beats 提问时间:8/13/2022 更新时间:8/13/2022 访问量:523

问:

所以我才刚刚开始学习C++,我只是想把一切都准备好。当我为 hello world 代码运行编译的二进制文件时,它显示控制台输出,但之后不会切换到新行。下面是一个示例:

Hello, World!michaela@michaela-HP-Laptop-17-by4xxx: $

我尝试研究,但我找不到一个好的解决方案。我在 Ubuntu 20.04 上,并使用 BASH shell。如果有任何帮助,我将提供代码,尽管我对此表示怀疑,因为它实际上只是输出“Hello, World!”。

#include <iostream>

int main(){
    std::cout << "Hello, World!";
    return 0;
}
C++ Bash IO IOstream ostream

评论

2赞 user4581301 8/13/2022
C++ 不会做任何你不要求的事情。您没有在输出末尾要求换行符,您没有得到换行符。
0赞 user4581301 8/13/2022
请注意,“不做”有点强。它更像是“几乎从不做”,强调“从不”比“几乎”要强得多。
1赞 user4581301 8/13/2022
std::cout << "Hello, World!\n";

答:

3赞 chouayb belhizia 8/13/2022 #1

试试这个:

std::cout << "Hello, World!"<<std::endl;

或者你可以使用这个:

std::cout << "Hello, World!\n";

和 之间的唯一区别是添加(刷新输出流),这通常是完全不必要的,并且会使程序变慢。std::endl\nstd::endlstd::flush

评论

0赞 Pete Becker 8/13/2022
在这种情况下,刷新也是多余的。正常终止(例如,从刷新返回所有输出流。 +1.main
0赞 davolfman 8/13/2022
我以为还在系统上添加了回车,这对换行符来说是正常的。std::endl
5赞 davolfman 8/13/2022 #2

对于大多数编程语言来说,这是完全正常的,尤其是在 Unix 环境中。如果您使用 或 ,即使是 shell 脚本也会在没有换行符的情况下打印。而且,由于终端模拟了旧的类似电传打字机的打印机系统,光标不会仅仅因为程序退出而重置。printfecho -n

如果您想要换行符,请在字符串中添加 a,或在文本后输出 a。'\n'std::endl