[問題] argv參數問題

看板C_and_CPP (C/C++)作者 (GnCtIlike)時間11年前 (2015/04/12 00:57), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 工作站 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 想請問為何c++ argv參數是否有什麼限制呢? 這是我餵給argv的參數: ./execute.sh -r -i _____ -o rank-list -m model 本來_____都用query_test.xml(query後面接底線)來測,都正常跑 但是測某一個擋叫做 query-test.xml(query後面接-)來測時 就跑出了以下訊息: terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::erase: __pos (which ....... ./execute.sh: line 1: 4462 已經終止 ./test_3_xml $1 $2 $3 $4 $5 ... 然後程式就終止了@@ 餵入的資料(Input): ./execute.sh -r -i query_test.xml -o rank-list -m model => 正常 ./execute.sh -r -i query-test.xml -o rank-list -m model => 意外終止 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::erase: __pos (which ....... 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 不太熟悉工作站的環境,希望高手幫忙一下,感恩 如果有違反版規在自刪 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.174.2 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428771420.A.056.html

04/12 01:02, , 1F
程式沒寫好吧 檔名不要用-
04/12 01:02, 1F

04/12 01:17, , 2F
這跟檔名有沒有 - 無關吧, 要看原 PO 程式怎麼寫的
04/12 01:17, 2F

04/12 01:37, , 3F
對呀 印象中應該是沒差@@ 而且也確實有讀到擋,只是就停了QQ
04/12 01:37, 3F

04/12 02:39, , 4F
是說, 不知道你為什麼要多一層 shell script, 不過要傳所有
04/12 02:39, 4F

04/12 02:39, , 5F
參數進去用 "$@" 應該會好一點, 也不用費力寫一堆 $1$2$3
04/12 02:39, 5F

04/12 02:41, , 6F
"$@" 的引號要加, 否則有些參數會傳錯
04/12 02:41, 6F

04/12 13:08, , 7F
檢查看看程式有沒有把-當成判斷的依據
04/12 13:08, 7F

04/15 07:17, , 8F
"中-出" vs 中-出
04/15 07:17, 8F
文章代碼(AID): #1LAL9S1M (C_and_CPP)
文章代碼(AID): #1LAL9S1M (C_and_CPP)