2012-03-08 17 views
16

esto probablemente se haya preguntado antes, pero hasta ahora no he podido encontrar ninguna respuesta. Intento iniciar mi programa con entrada de varias líneas, I.E. algo que no quiero escribir en la línea de comando cada vez (ya que probablemente me equivoque). Miré los argumentos de la línea de comandos y pegué mi entrada allí, pero lo interpretó como que cada línea es un comando.Entrada de tubería en un programa de C++ para depurar en Visual Studio

de entrada en caso de que ayuda:

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 

Respuesta

37

Ponga sus datos en un archivo y luego ir a las propiedades del proyecto en Visual Studio y seleccionar la categoría de "depuración".

En el "Argumentos del comando" tipo de propiedad:

< "path/to/the/file" 

Ahora ese archivo se alimenta al programa a través de la entrada estándar cuando se inicia el depurador o cuando se inicia el programa dentro de Visual Studio (pero sin el depurador) usando Ctrl-F5.

Puede usar macros VS para especificar el directorio del proyecto, etc., si desea que el archivo de prueba se mueva junto con el proyecto.

+1

Además, generalmente solo agrego el archivo de datos como un archivo normal en el proyecto, y lo marco como 'excluir de compilación'. Luego puede establecer los argumentos en el depurador en ' Joe

+0

¡Si mal no recuerdo, esto no está documentado pero funciona! Es particularmente sorprendente porque

+1

Una cosa a tener en cuenta es que la redirección del depurador se rompió en VS2008: http://stackoverflow.com/a/3122074/12711 No está claro exactamente qué versiones de 2008 está rota, me funciona hoy en VS 2008 SP1 en Win7 x64, pero los comentarios en el informe de error indican que, para algunas personas, VS2008 SP1 no lo soluciona. –

4

Puede guardar su entrada como un archivo (como "intput.txt").. luego llamar a

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