Запись вывода в текстовый файл не показывает ввод

У меня есть программа на C++, которая должна считывать ввод из текстового файла и записывать вывод в текстовый файл. Я хотел попробовать достичь этого без добавления дополнительного кода, поэтому в командной строке я пишу

project.exe<input.txt>output.txt

Это работает, но в файле ouput.txt я не вижу никаких входных данных. Это просто говорит что-то вроде:

Enter option: 
option output

Я мог бы просто добавить std::cout<<option; после каждого ввода, но есть ли способ показать вход без добавления дополнительного кода?

1 ответ

Решение

Вы пытаетесь найти способ сделать оболочку Windows копировать или клонировать ваш входной поток, чтобы после того, как он был использован вашей программой, он также был отправлен в выходной поток. Есть некоторые проблемы с этим:

  1. Он был использован вашей программой!
  2. Ваша программа имеет контроль над потоком вывода

Я не говорю, что это невозможно (в Linux какая-то смесь с tee может быть возможно), но если это возможно, то это будет хакерским и, конечно, нетрадиционным.

Честно говоря, я бы придерживался вашей собственной идеи просто отразить входной поток вывода в самой программе. Если кто-то использует вашу программу в интерактивном режиме, это будет выглядеть странно для них, но вы можете предоставить переключатель командной строки для переключения этой функции. Это будет аналогично дополнительной функции PuTTY "локальное эхо", например.

Другие вопросы по тегам