2017-09-30 11 views
1

私は私のループで大きな問題を抱えているようです。 プログラムの内容:プログラムはテキストファイルを読み込み、テキストファイルの各行に文字列形式を与えます。文字列に必要なデータはタブで区切られているので、最初のタブを押すまで、解析してタブを見つけてすべての文字を追加します。その後、タブまで文字を追加して配列に追加して、後でデータを評価することができます。C++ Whileループは、テキストファイルの次の行に反復しません

My Inner whileループは、最初の行を正しく解析していますが、テキストファイルの次の行に反復しません。

//Creates a temporary array 
string current_line; //declare var line 
string temp_string = ""; 
//When getline hits 'n' we are adding that to the string current_line 
cout<<"Entering the Loop \n"<<endl; 

// Gets the first line in the Text file and continutes to get each new line 
// until we hit the end of file 
while(getline(infile,current_line,'\n').good()){ 

    //cout << "CURRENT SIZE " << current_line.size() << endl; 

    /* iterates through each character as long as the size of the current 
    line is greater than the counter i 
    */ 
    while(i < current_line.size()){ 

     // If the Current character in the line is NOT a tab we add the 
     // character to string temp_storage 
     if(current_line[i] != '\t'){ 
      temp_storage +=current_line[i]; 
      } 

     /*If the Current Character in the line is a tab then we store 
     string temp_storage into another variable. Temp is cleared so we 
     can get the next word in the string 
     */ 
     else if (current_line[i] =='\t'){ 
      Storage = temp_storage; 
      cout << "Current val: "<< Storage <<endl; 
      // Clears the temporary storage 
      temp_storage = ""; 
      cout << "Clearing the temp_storage..."<< temp_storage<<endl; 
      } 
     //out << i << endl; 
     i++; // iterates the loop 
    } 
    cout<<"loop finished"<<endl; 
} 

//ここで読むためのプログラムに

感謝を実行しているの出力があります!

enter image description here

+2

私は次の行のためにiをリセットしません。 –

+0

@ArtemyVysotsky私は完全に感謝しました。 – Rustykatz

+0

@MichaelBurrありがとう! – Rustykatz

答えて

1

あなたはストリームイテレータのような「現代」のものにしていない場合は、私は彼らが意図していたとして構築「古い」を使用します。 forループを試してください。 whileステートメントは何でもできますが、カウンタを反復するだけの場合は、forというループがはるかに適しています。

あなたはほとんど間違ってなかったかもしれない、ということ行っていた場合:あなたのコードで

for (int i=0; i<current_line.size(); i++)

を、iも、このコードセクションに入る任意の値を持つことができます。

+1

ちょっとした提案...私は答えがフレンドリーになるように言い換えます – purpletentacle

+0

@purpletentacle OKあなたは何を意味するのか分かります。うまくいけば、それは今より良いです。 –

関連する問題