Перенаправление вывода в Windows перезаписывает окончания строк

Пример программы на 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 но это ничего не изменило.

ETA:
Используя echo + redirection, я могу отправить символ LF в файл, используя

echo line 1◙line 2 >echo.txt

(где символ LF сделан с Alt-10 на клавиатуре). Так что, похоже, это проблема C ++.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]