在windows和linux上全线后不同处理换行

时间:2014-01-09 11:41:28

标签: c++ windows command-line output

我有以下非常简单的示例程序(此示例是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中的自动换行符?

0 个答案:

没有答案