私は1つの列しか持たないファイルを読み込み、3つの列のターミナルに書き出しようとしています。私は1つの列を別のvector<string>
に読み込むことに決めました。その後、vector string
をvector<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;
}
}
にそれを表示するための私のコードで私はそれがどこかにちょうど誤植だほぼ確実だけど、慎重に数回を通じてコーミングした後、私はできませんでしたそれを発見する。ベクトルの中のベクトルを使って作業しようとしたのは初めてのことです。多分私は何かを理解していないでしょうか?私は知らない
何か助けていただければ幸いです。何が間違っているのか、同じ結果を達成するためのよりよい方法を知っているか、
ありがとうございます。
OF COURSE !!どうして私はそれを逃したかもしれない! 編集:最終的なものではなく、単語の先頭に出力が整列するように、書式を設定する方法を知っていますか? – Synia
特に、 'flatDutyRoster.push_back(temptVec)'を呼び出した後。 –
助けてくれてありがとう。私は何とかそれはそれを上書きすると仮定しました。私の愚かなこと。私は次回より注意するよ。 – Synia