2012-03-08 2 views
16

это, вероятно, было задано раньше, но до сих пор я не смог найти ответы. Я пытаюсь запустить свою программу с помощью многострочного ввода, I.E. что-то, что я не хочу вводить в командной строке каждый раз (так как я, вероятно, ошибаюсь). Я просмотрел аргументы командной строки, и я вставил туда свой вход, но интерпретировал его как каждую строку, являющуюся командой.Ввод данных в программу C++ для отладки в Visual Studio

Ввод в случае это помогает:

8 
c j i b s x k j 
t a o a v y z l 
x r t s w o n m 
z y x e n s p r 
l l o b s t e r 
t g x a a a a a 
j p e l a k e k 
t r s l j e e e 
cat 
test 
baseball 
bake 
paste 
lobster 
stake 
zen 
locks 
rake 
gel 
slack 
jar 
dinosaur 
0 

ответ

37

Поместите ваши данные в файл затем перейдите к свойствам проекта в Visual Studio и выберите категорию «Отладка».

В «Command Arguments» Тип недвижимости:

< "path/to/the/file" 

Теперь, когда файл будет подаваться в программу через стандартный ввод, когда отладчик запускается или при запуске данной программы в Visual Studio (но без отладчик) с помощью Ctrl-F5.

Вы можете использовать макросы VS для указания каталога проекта и т. Д., Если вы хотите, чтобы тестовый файл перемещался вместе с проектом.

+1

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

+0

Если я правильно помню, это не документировано, а работает! Его особенно удивительно, потому что <обычно обрабатывается оболочкой, которой в этом случае не существует. –

+1

Одна вещь, о которой нужно знать, это то, что перенаправление отладчика было нарушено в VS2008: http://stackoverflow.com/a/3122074/12711 Непонятно, в каких версиях 2008 года он нарушен - он работает для меня сегодня в VS 2008 SP1 на Win7 x64, но комментарии в отчете об ошибке указывают, что для некоторых людей VS2008 SP1 не исправляет это. –

4

Вы можете сохранить введенные данные в виде файла (например, "intput.txt").. Затем вызовите

freopen("intput.txt", "r", stdin); 
//code to read from stdin. 
fclose(stdin);