[英]C++ - repeatedly using istringstream
我有一個用於讀取帶有浮點數的文件的代碼,如下所示:“3.34|2.3409|1.0001|...|1.1|”。 我想使用 istringstream 讀取它們,但它不像我期望的那樣工作:
string row;
string strNum;
istringstream separate; // textovy stream pro konverzi
while ( getline(file,row) ) {
separate.str(row); // = HERE is PROBLEM =
while( getline(separate, strNum, '|') ) { // using delimiter
flNum = strToFl(strNum); // my conversion
insertIntoMatrix(i,j,flNum); // some function
j++;
}
i++;
}
在標記點,僅第一次將行復制到單獨的流中。 在下一次迭代中,它不起作用並且什么也不做。 我希望可以在每次迭代中不構建新的 istringstream 對象的情況下使用更多次。
將行設置為 istringstream 后...
separate.str(row);
...通過調用重置它
separate.clear();
這會清除在前一次迭代中或通過設置字符串設置的任何 iostate 標志。 http://www.cplusplus.com/reference/iostream/ios/clear/
您需要添加一個separate.clear();
在separate.str(row)
之后的separate.str(row)
清除狀態位,否則eofbit
被設置並且后續讀取失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.