C++ getline在第二次调用时不工作

C++ getline在第二次调用时不工作,c++,fstream,getline,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];

第二段时间不起作用。我尝试了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
    }
while(std::getline(filestr,line)){
if(line.find(“第一个循环从
filestr
中提取行,直到没有任何内容可读取为止

很难解释为什么你认为第二个循环会找到更多的行。如果第二个循环有任何输入要读,第一个循环就会已经读了

我不能自信地建议修复,因为您没有告诉我们您的代码应该做什么。但是,假设
filestr
是一个文件流,您可能希望在执行
清除操作后将读取光标移到开头:

filestr.clear();               // clear any state flags
filestr.seekg(0, ios::beg);    // move cursor to start so we read everything again
如果
filestr
的名称不正确,并且实际上代表了一个非文件流,那么您不能这样做,需要一种新的方法来实现预扫描算法


另外,您应该避免使用
new
,而使用
std::vector
。您应该正确缩进代码,而不是弄乱代码。

代码格式不正确。您似乎认为第二个while循环是嵌套的,但实际上它是在第一个循环之后运行的。