[問題] stringstream 讀取失敗
開發平台(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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):