2011-10-23 15 views
0

私は1つの列しか持たないファイルを読み込み、3つの列のターミナルに書き出しようとしています。私は1つの列を別のvector<string>に読み込むことに決めました。その後、vector stringvector<vector <string> >に1つ入れてから、端末に書き出します。Vector <vector <string>>に読み込むループが動作しないのはなぜですか? Linux C++

フラットで家事のための名簿になっていると知っています。したがって、私は別のベクトルに読み込みを開始する前に、ファイルを15行分だけ分割することができます。しかし、職務/家事の数はマネージャーによって変更することができます。したがって、私はのあらかじめ宣言された番号を持つことができないので、私は何個のvector<string>が必要なのか分かりません。

.datファイルには、これは私がそれを

Duty1 Duty2 Duty3 
P1  P2  P3 
P1  P2  P3 
P1  P2  P3 

これが今

どのように見えるかであるように見えるしたいものである

Duty1 
P1 
P1 
P1 
... 

Duty2 
P2 
P2 
P2 
... 

Duty3 
P3 
P3 
P3 
... 
* 

の形態であり、

Duty1 Duty1 Duty1 P1 P1 P1 P1 P1 P1 P1 P1 P1 

私はwonderinだったg誰かが私の間違いを見つけられるのを助けることができるならば。

私のファイルをインポートするためのコードです。

void DutyManagement::importFlatDuties(){ 

     ifstream fin1(dutyFile.c_str()); 

     if(!fin1){           
      cout << "Unable to find file: " << dutyFile<<endl; 
      exit(1); 
     } 

     else{ 

      vector <string> temptVec; 
      string tempString; 

      flatDutyRoster.clear();         

      while(true){ 

       for (int i=0; i<14; i++){ 
       fin1 >> tempString;          

        if (tempString == "*"){ 
        fin1.close(); 
        return; 
        } 

        temptVec.push_back(tempString);       
        } 

       flatDutyRoster.push_back(temptVec);    
      }    
     }   
} 

そしてここで、端末

void DutyManagement::displayDuty(){ 
    importFlatDuties(); 

    for (int i=0; i<14; i++){ 
     for (int j=0; j<flatDutyRoster.size(); j++){ 
      if (i == 0){ 
       cout<<setw(10)<<"Duty "<<j+1<<": "<<setw(10)<<flatDutyRoster[j].at(i); 
      } 
      else{ 
       cout<<setw(23)<<flatDutyRoster[j].at(i);  
      } 
     } 
     cout<<endl; 
    } 
} 

にそれを表示するための私のコードで私はそれがどこかにちょうど誤植だほぼ確実だけど、慎重に数回を通じてコーミングした後、私はできませんでしたそれを発見する。ベクトルの中のベクトルを使って作業しようとしたのは初めてのことです。多分私は何かを理解していないでしょうか?私は知らない

何か助けていただければ幸いです。何が間違っているのか、同じ結果を達成するためのよりよい方法を知っているか、

ありがとうございます。

答えて

0

どこかtemptVec.clear()に電話する必要があります。

+0

OF COURSE !!どうして私はそれを逃したかもしれない! 編集:最終的なものではなく、単語の先頭に出力が整列するように、書式を設定する方法を知っていますか? – Synia

+0

特に、 'flatDutyRoster.push_back(temptVec)'を呼び出した後。 –

+0

助けてくれてありがとう。私は何とかそれはそれを上書きすると仮定しました。私の愚かなこと。私は次回より注意するよ。 – Synia

関連する問題