我有以下非常简单的示例程序(此示例是C ++,但对于任何编程语言,行为很可能都是相同的):
#include <iostream>
#include <string>
int main(int argc, char* argv[])
{
std::string test;
// One console line is 80 characters long
// Add 80 times 'a' to the string
test.append(80, 'a');
// Then add the newline char and the second line
test.append("\nSecond line");
std::cout << test;
return 0;
}
它在Windows和Linux中生成不一致的控制台输出(每行80个字符): Windows中的输出(默认命令行,在PowerShell中相同):
aaaa(...80 times a...)aaa
Second line
Linux(gnome控制台)中的输出(观察到没有换行符):
aaaa(...80 times a...)aaa
Second line
Linux版本是我想要的版本。
Windows展示的行为在打印80'a'字符然后自动打印换行符的意义上是可以理解的。然后遇到字符串中的'\ n'并打印另一个换行符。 Linux只是不插入换行符,如果插入了更多字符,只需将行包装在最后。由于不再插入字符,因此不是这种情况。然后'\ n'到达并跳转到下一行。
有没有办法可以摆脱Windows中的自动换行符?