2017-04-22 69 views
-1

第二次不起作用。我试图filestr.clear()/ flush()和其他人没有结果。如果我在第一时间评论一切正常,但我需要对象的数量。有人请帮助getline不能用于第二个呼叫

while (std::getline(filestr, line)) { 
      if (line.find("<rect") != std::string::npos) count_rect++; 
     } 
     rect = new Rectangle[count_rect]; 
    while (std::getline(filestr, line1)) { 
     //code 
    } 
+0

代码格式不正确。你似乎认为2nd while循环是*嵌套*,但实际上它是在* first循环之后运行的。 – zett42

回答

0

第一个循环从filestr中提取行,直到没有什么可以读取。

很难说明为什么你认为第二个循环会找到更多的行。如果第二个循环有任何要读取的输入,则第一个循环已经读取它。

我无法自信地提出修复方案,因为您没有告诉我们您的代码应该做什么。然而,假设filestr是一个文件流,你可能希望你的clear手术后的阅读光标移动到开始:

filestr.clear();    // clear any state flags 
filestr.seekg(0, ios::beg); // move cursor to start so we read everything again 

如果filestr名为很差,实际上代表非文件流,你可以这样做并且需要一种新的方法来预扫描算法。

此外,你应该避免new有利于std::vector。你应该适当地缩进你的代码,而不是弄得乱七八糟。