Стандартный ввод CLion во время отладки

То, что я пытаюсь сделать, в основном:

./myProgram < myData.txt

Пока занимаюсь отладкой с CLion IDE. Я просто не могу найти возможность сделать это.

похожий вопрос, но специфичный для продукта MSVS


person user5414301    schedule 06.10.2015    source источник
comment
Вам должно повезти, если вы зададите этот вопрос на соответствующем форуме разработчиков.   -  person Dialecticus    schedule 06.10.2015


Ответы (5)


У меня была та же проблема, и кажется, что CLion еще не обрабатывает стандартный ввод.

Я обошел эту проблему, изменив входной поток перед запуском моей программы.

Например, если вы хотите ввести файловый поток внутри вашего стандартного ввода, вы можете написать в своем основном:

std::ifstream in("ABSOLUTE_PATH_TO_YOUR_FILE");
std::cin.rdbuf(in.rdbuf());

Затем вы можете найти способ переключить это изменение потока, когда захотите. Обратите внимание, что для файлов вам нужно будет указать абсолютный путь, поскольку приложение запускается из другого каталога, отличного от текущего.

Я надеюсь, что это может помочь, пока CLion не предоставит реальное решение.

person Arnaud Bertrand    schedule 22.02.2016
comment
Если вы не хотите делать это с файлом, помните, что есть stringstream, которые вы можете использовать - person smac89; 11.01.2018

Предполагая, что ваш входной файл myData.txt, вы можете повторно открыть/повторно использовать поток stdin, используя freopen

freopen("myData.txt","r",stdin);

если вы хотите сделать то же самое с вашим выводом:

freopen("myOutput.txt","w",stdout);

это будет работать для std::cin, printf и т.д...

Дополнительную информацию об этом можно найти здесь: http://www.cplusplus.com/reference/cstdio/freopen/


Кстати, для этого уже есть запрос фичи. Если вы заинтересованы, вы можете проголосовать здесь, чтобы получить приоритет: https://youtrack.jetbrains.com/issue/CPP-3153

person Juan Leni    schedule 03.05.2017

В CLion 2020.1 эта функция встроена:

Перенаправление ввода

Если вам нужно перенаправить ввод из файла в стандартный ввод вашего приложения, теперь вы можете это сделать. Используйте новое поле в конфигурации под названием Перенаправить ввод от. Войти:

  • Относительный путь (CLion будет начинаться с пути к рабочему каталогу).
  • Абсолютный путь (будет переназначен для удаленных конфигураций).
  • Или макросы (типа FilePrompt). введите здесь описание изображения
person Ofek Shilon    schedule 02.09.2020

Тем не менее, у Clion нет такой функции, как pycharm, где мы можем вводить данные в терминале во время отладки кода.

Но у него есть возможность вводить данные через файл .txt во время отладки.

Изображение окна настроек отладки

Щелкните значок настройки в консоли отладки (в верхнем левом углу), чтобы открыть настройку отладки. Затем установите флажок «Перенаправить ввод из», выберите путь к входному файлу и нажмите «ОК».

Ну вот!

Теперь вы можете вводить данные из текстового файла во время отладки кода.

person Krish Depani    schedule 02.08.2021

Для меня CLion создает исполняемый файл в файле с именем «cmake-build-debug». Посмотрите на мою файловую структуру на картинке.

Исполняемый файл относительно текстового файла

Затем я просто открыл свой терминал и перешел в каталог, содержащий исполняемый файл, и использовал эту команду для передачи текстового файла:

./FirstProject < ../hw1.txt
person zhughes3    schedule 25.08.2017
comment
Да, но это вопрос об отладке. Это не то же самое, что запустить программу - person smac89; 11.01.2018