Windows上的输出重定向会覆盖行结尾

时间:2014-10-16 15:46:59

标签: c++ line-endings windows-console output-redirect

示例C ++程序:

#include <iostream>
#include <fstream>    
int main(int argc, char* argv[]) {
    if (argc > 1) {
        std::ofstream output(argv[1]);
        output << "Line 1\nLine 2\n" << std::flush;
    } else {
        std::cout << "Line 1\nLine 2\n" << std::flush;
    }
}

直接输出(Windows 7):

TestProgram.exe direct.txt

产量

Line 1[LF]
Line 2[LF]

重定向输出:

Testprogram.exe >redir.txt

产量

Line 1[CR][LF]
Line 2[CR][LF]
  1. 线路结尾被覆盖的位置在哪里? cout?安慰?中间某个地方?为什么?
  2. 我能做些什么吗?我已经尝试在binary上设置std::cout标记,但这并没有改变任何内容。
  3. ETA: 使用echo +重定向我可以使用

    将LF字符发送到文件
    echo line 1◙line 2 >echo.txt
    

    (使用键盘上的Alt-10制作LF字符)。所以它似乎是一个C ++问题。

0 个答案:

没有答案