2012-03-08 2 views
16

, probabilmente è stato chiesto prima, ma finora non sono stato in grado di trovare alcuna risposta. Sto cercando di avviare il mio programma con l'input su più righe, I.E. qualcosa che non voglio digitare nella riga di comando ogni volta (come probabilmente farei un errore). Ho esaminato gli argomenti della riga di comando e ho incollato il mio input lì, ma lo ha interpretato come ogni riga come un comando.Inserimento di pipe in un programma C++ per eseguire il debug in Visual Studio

di ingresso in caso aiuta:

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 

risposta

37

mettere i vostri dati in un file poi passare alle proprietà del progetto in Visual Studio e selezionare la categoria "Debug".

Nella "argomenti del comando" Tipo di proprietà:

< "path/to/the/file" 

Ora che il file sarà alimentato al programma tramite standard input quando viene avviato il debugger o quando si avvia il programma all'interno di Visual Studio (ma senza la debugger) usando Ctrl-F5.

È possibile utilizzare i macro VS per specificare la directory del progetto, ecc. Se si desidera che il file di prova si sposti con il progetto.

+1

Inoltre, di solito aggiungo il file di dati come un normale file nel progetto e lo contrassegno come "escludi dalla build". Quindi puoi semplicemente impostare gli argomenti nel debugger su " Joe

+0

Se ricordo bene, questo non è documentato ma funziona! È particolarmente sorprendente perché <è normalmente gestito dalla shell, che in questo caso non esiste. –

+1

Una cosa di cui essere a conoscenza è che il reindirizzamento del debugger è stato interrotto in VS2008: http://stackoverflow.com/a/3122074/12711 Non è chiaro esattamente in quale versione del 2008 è stato suddiviso - funziona per me oggi in VS 2008 SP1 su Win7 x64, ma i commenti nel bug report indicano che per alcune persone VS2008 SP1 non lo aggiusta. –

4

È possibile salvare il vostro ingresso come un file (come "intput.txt").. quindi chiamare

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