第二次虽然不起作用。我试过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
}
答案 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
。你应该正确缩进你的代码,而不是搞乱。