2017-04-22 17 views
-1

2回目は動作しません。私はfilestr.clear()/ flush()などの結果を出さなかった。私が最初にコメントしている間はすべてOKですが、私はオブジェクトの数が必要です。誰か助けてくださいgetlineは2回目の呼び出しでは機能しません

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

コードの形式が正しくありません。第2回whileループは*ネストされていると思うようですが、実際には*最初のループの後に実行されます。 – zett42

答えて

0

最初のループは、何も残さない限り、filestrの行を抽出します。

なぜ、2番目のループがより多くの行を見つけられると考えるのは難しいです。 2番目のループに読み込む入力があった場合、最初のループはすでにそれを読み込んでいます。

あなたのコードが何をするかを教えてくれなかったので、私は自信をもって修正を提案することはできません。しかし、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であることを避けてください。そして、混乱を起こさずにコードを適切にインデントする必要があります。

関連する問題