2015-10-06 9 views
14

То, что я пытаюсь сделать, это в основном:CLion стандартный ввод при отладке

./myProgram < myData.txt

В то время как я отладки с CLion IDE. Я просто не могу найти способ сделать это.

similar вопрос - но конкретного продукта для МСВС

+0

Вы должны иметь больше удачи, задавая этот вопрос в соответствующем dev's [forum] (https://devnet.jetbrains.com/community/clion?view=discussions) – Dialecticus

ответ

16

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

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

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

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

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

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

+0

Если вы не хотите делать это с файлом, помните, что есть 'stringstream', который вы можете используйте – smac89

5

Предполагая, что ваш входной файл 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

0

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

Executable File Relative To Text File

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

./FirstProject < ../hw1.txt 
+0

Да, но это спрашивает об отладке. Это не то же самое, что запуск программы – smac89

Смежные вопросы