getline没有进行二次通话

时间:2017-04-22 13:26:36

标签: c++ fstream getline

第二次虽然不起作用。我试过filestr.clear()/ flush()和其他没有结果的人。如果我在一切正常的时候评论第一个,但我需要对象的数量。有人帮忙,请

   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
    }

1 个答案:

答案 0 :(得分: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。你应该正确缩进你的代码,而不是搞乱。