簡體   English   中英

C++ - 反復使用 istringstream

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM