2012-03-08 164 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中,选择“调试”类别。

在“命令参数”属性类型:

< "path/to/the/file" 

现在,当调试器启动该文件将被送入通过标准输入程序或当您启动Visual Studio中的程序(但没有调试器)使用Ctrl-F5。

如果您希望测试文件随项目一起移动,您可以使用VS宏来指定项目目录等。

+1

此外,我通常只是将数据文件添加为项目中的常规文件,并将其标记为'从构建中排除'。然后,您可以将调试器中的参数设置为' Joe 2012-03-08 05:11:21

+0

如果我没有记错,这是没有记录,但工程!它特别令人惊讶,因为<通常由shell处理,在这种情况下不存在。 – 2012-03-08 05:11:35

+1

有一点需要注意的是调试器重定向在VS2008中被破坏了:http://stackoverflow.com/a/3122074/12711目前尚不清楚哪个版本的2008年被破坏 - 它在VS 2008中对我有用SP1的Win7 x64,但在错误报告中的评论表明,对于一些人VS2008 SP1不能解决它。 – 2012-03-08 05:28:10

4

可以将您的输入保存为一个文件(如 “intput.txt”)。 然后调用

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