2
是否有一個while循環允許我將stringstream的所有值輸入到某種數據類型中?例如:從字符串流中輸入值
stringstream line;
while(/*there's still stuff in line*/)
{
string thing;
line >> thing;
//do stuff with thing
}
是否有一個while循環允許我將stringstream的所有值輸入到某種數據類型中?例如:從字符串流中輸入值
stringstream line;
while(/*there's still stuff in line*/)
{
string thing;
line >> thing;
//do stuff with thing
}
是:
std::stringstream line;
std::string thing;
while (line >> thing)
{
// do stuff with thing
}
if (line.fail())
{
// an error occurred; handle it as appropriate
}
流操作(如>>
)返回流;這是什麼讓你連鎖流操作,如:
line >> x >> y >> z
一個流可以用作布爾;如果數據流處於良好狀態(也就是說,如果數據可以從中讀取),則其評估爲true
;否則它評估爲false
。這就是爲什麼我們可以使用流作爲循環中的條件。
流有多種原因不會處於良好狀態。
其中之一是當你到達流的末尾(由測試line.eof()
指示);顯然,如果你想從流中讀取所有的數據,這是你期望流完成後的狀態。
流不會處於良好狀態的另外兩個原因是,如果某些內部錯誤或流上的操作失敗(例如,如果嘗試提取整數但流中的下一個數據不是代表一個整數)。這兩項都通過line.fail()
進行測試。
打我吧,我還在打字! (string thing; line >> thing;){use(thing);'+ 1' – sbi 2010-11-20 21:44:23
' }'如果條件在我們的循環中失敗了,line.fail()將是true;你將不得不打破循環,以保持流暢。小心使用好(這就是爲什麼我認爲),因爲!stream.fail()與stream.good()不相同。 – 2010-11-20 22:06:33