2012-03-08 156 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);