[問題] stringstream 讀取失敗

看板C_and_CPP作者 (void)時間12年前 (2013/04/29 15:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): http://codepad.org/cMTEounB 這是為了讀入 UVa 469 的測資寫的程式 http://uva.onlinejudge.org/external/4/469.html 因為讀入的格式有點麻煩,所以我用 getline + stringstream 來處理測資 但是沒想到使用 stringstream 卻出了一點問題 這行竟然會跑不到 while (ss >> x >> y) ... 本來以為是沒有加上 .clear() 的問題,但是加上去了也是無效 上面那段程式碼,我用 ss << lineBuf; 來把 ss 讀進去,最後透過 ss.str() 確認已經讀進去了,但是無法讀出來 後來試了一些方法以後歸納出 1.加上程式碼的 // case 1 那一段,先把 ss 清空以後再使用輸出運算子 這樣可以成功 2.加上程式碼的 // case 2 那一段,直接指定 ss 的字串放什麼東西 這樣也可以成功 但是我還是想不透為什麼原本那樣不可行 好像也不是因為卡了 '\n' 的問題?就算有也可以直接無視掉才對 而且我用了 ss.ignore() 也無效... 翻過書了好像也沒看到這方面的問題,C++ Primer 和 C++ 標準程式庫 這兩本都對 stringstream 輕描淡寫(而且還運用自如,沒有我這種困擾 T__T) 想知道為什麼會這樣... 或是有沒有其他更好的寫法?! 謝謝大家 餵入的資料(Input): ------------ 這行不算 1 LLLLLLLLL LLWWLLWLL LWWLLLLLL LWWWLWWLL LLLWWWLLL LLLLLLLLL LLLWWLLWL LLWLWLLLL LLLLLLLLL 3 2 7 5 ------------ 這行不算 預期的正確結果(Expected Output): ------------ 這行不算 Lands: LLLLLLLLL Lands: LLWWLLWLL Lands: LWWLLLLLL Lands: LWWWLWWLL Lands: LLLWWWLLL Lands: LLLLLLLLL Lands: LLLWWLLWL Lands: LLWLWLLLL Lands: LLLLLLLLL x = 3, y = 2 lineBuf = 7 5 ss = 7 5 Work, please! x = 7, y = 5 ------------ 這行不算 錯誤結果(Wrong Output): ------------ 這行不算 Lands: LLLLLLLLL Lands: LLWWLLWLL Lands: LWWLLLLLL Lands: LWWWLWWLL Lands: LLLWWWLLL Lands: LLLLLLLLL Lands: LLLWWLLWL Lands: LLWLWLLLL Lands: LLLLLLLLL x = 3, y = 2 lineBuf = 7 5 ss = 7 5 ------------ 這行不算 少了正確結果的紅色那兩行 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/cMTEounB 補充說明(Supplement): -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.224.190
文章代碼(AID): #1HVXtOT- (C_and_CPP)
文章代碼(AID): #1HVXtOT- (C_and_CPP)