[問題] vector<string> 下標轉換有問題

看板C_and_CPP作者 (無良記者)時間10年前 (2014/03/13 21:58), 編輯推噓11(11016)
留言27則, 9人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 我目前正在練習台大資工系申請入學的考古題,其中一題是要做一個能四則運算的計算機 輸入範例假設是:"23 * 40 + 15 / 5 - 98 * 3",然後會依照先乘除後加減算出答案 我目前的想法,是先把輸入的算式扔到一個vector<string>裡以免除空白的困擾 然後用isdigit()把裡面的數字複製到另外一個vector<string>中 再用istringstream把這條string轉為vector<int> 最後再配合原本vector<string>裡的算數符號做計算 不過目前走到第二行就卡住了,不知為何編譯器一直告訴我string不能轉為int 我覺得我的寫法應該能避免這個問題才對 請版上各位先進替我看看問題在哪裡,感謝 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/c6JoEWop 補充說明(Supplement): 這是我找到的考古題的部落格: http://dowdow.wordpress.com/c_language/problem/ntucsie2008/ --

11/04 22:52,
一樓帥哥
11/04 22:52

11/04 22:52,
二樓帥哥
11/04 22:52

11/04 22:52,
二樓帥哥
11/04 22:52

11/04 22:52,
..
11/04 22:52

11/04 22:53,
五樓吃屎
11/04 22:53

11/04 22:53,
幹 可以不要當簽名檔嗎...
11/04 22:53
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.13.62

03/13 22:08, , 1F
你的 init[i] 取出來的是 string , 而不是 string [i]
03/13 22:08, 1F

03/13 22:08, , 2F
vector<string> init; init[idx][pos] , 這才是你想要的.
03/13 22:08, 2F
不好意思,init[idx][pos]這句可以再解釋的更清楚嗎? 第一行我懂,但第二行這裡看不懂 感謝

03/13 22:14, , 3F
isdigit :: char -> bool,他只能判斷某一個"位數"
03/13 22:14, 3F

03/13 22:15, , 4F
所以digit的話必須要每一位數都是0-9
03/13 22:15, 4F
意思是說,我想要他判斷"26"是不可能的,他只能判斷"2"和"6"這樣嗎?

03/13 22:16, , 5F
簡單的說,你的 init[i] 型別是 string, 而不是 char.
03/13 22:16, 5F
還是不太懂,string和char在這邊的主要差異是什麼?我是想要用string來做沒錯

03/13 22:28, , 6F
但 isdigit 輸入引數只能是 char , 不能是 string
03/13 22:28, 6F
奇怪,C++ Primer 4E把包括這段在內的cctype函式都放在string章節內 所以我以為能直接這樣用,還是說我沒看懂那段0.0?

03/13 22:37, , 7F
1.不是判斷"2"、"6",而是判斷'2'、'6' 你要確認每個位數.
03/13 22:37, 7F

03/13 22:37, , 8F
2.這放在string也沒有錯...但是你要看他的範例用法阿0.0
03/13 22:37, 8F

03/13 22:38, , 9F
先弄清楚 char, string 有甚麼不同以及中間的關連
03/13 22:38, 9F

03/13 22:39, , 10F
再補足對 vector 的認識,你應該就可以知道問題在哪裡了
03/13 22:39, 10F

03/13 22:39, , 11F
字元相關函式放在字串章節還蠻正常的啊 @@ 你再復習一下吧
03/13 22:39, 11F

03/14 21:48, , 12F
講個跟這題無關的,寫code盡量保持好習慣別用中文寫註解
03/14 21:48, 12F

03/15 02:35, , 13F
//連線成功
03/15 02:35, 13F

03/15 13:46, , 14F
//連線成功無誤
03/15 13:46, 14F
請教一下,為何不要用中文寫註解? 我在練習程式都習慣用中文註記當下的想法及修正後的注意事項,這樣複習比較方便 中文註解會有什麼問題嗎? 還有//連線成功是什麼梗0.0? ※ 編輯: o07608 來自: 114.40.10.26 (03/15 14:28)

03/15 15:49, , 15F
你要不要再看一次4E的內容?
03/15 15:49, 15F

03/15 15:49, , 16F
書上是用string::size_type
03/15 15:49, 16F

03/15 15:49, , 17F
而你卻是用vector<string>::size_type
03/15 15:49, 17F

03/15 20:42, , 18F
中文存檔後,某些compiler對某些字再開啟後會變亂碼。
03/15 20:42, 18F

03/15 20:42, , 19F
像是 "功" 就是其中一個字。
03/15 20:42, 19F

03/16 14:13, , 20F
喔喔了解
03/16 14:13, 20F

03/16 20:57, , 21F
compiler? editor吧?
03/16 20:57, 21F

03/16 22:23, , 22F
用錯詞彙 , 是 editor (IDE) 無誤
03/16 22:23, 22F

03/17 22:56, , 23F
不只變亂碼,重要的是compile會炸裂,//連線成功 程式的下
03/17 22:56, 23F

03/17 22:57, , 24F
一行會無條件直接被註解掉 editor compiler都不會警告你
03/17 22:57, 24F

03/17 23:17, , 25F
@kyfish , 我記得(過去經驗)有些compiler會炸,有些不會,
03/17 23:17, 25F

03/17 23:17, , 26F
但無論如何在 code 裡盡可能以英文撰之是共識。
03/17 23:17, 26F

03/17 23:39, , 27F
utf8+英文 跨os/editor/scm相容性最好
03/17 23:39, 27F
文章代碼(AID): #1J8RcNHm (C_and_CPP)