Я пытаюсь прочитать файл, в котором есть только один столбец, и записать его на терминал в 3 столбца.Я решил прочитать один столбец в отдельный vector<string>
.Затем поместите vector string
в одну vector<vector <string> >
, прежде чем записывать в терминал.
Я знаю, что это должен быть список дел по дому, поэтому я знаю, что могу разбить файл, прочитав 15строки, прежде чем я начну читать в другой вектор.Тем не менее, количество обязанностей / обязанностей может быть изменено менеджером, поэтому я не знаю, сколько vector<string>
мне понадобится, поэтому я не могу просто иметь заранее установленное число vector<strings>
.
Файл .dat имеет вид
Duty1
P1
P1
P1
...
Duty2
P2
P2
P2
...
Duty3
P3
P3
P3
...
*
Вот как я хочу, чтобы он выглядел
Duty1 Duty2 Duty3
P1 P2 P3
P1 P2 P3
P1 P2 P3
ЭтоВот как это выглядит сейчас
Duty1 Duty1 Duty1
P1 P1 P1
P1 P1 P1
P1 P1 P1
Мне было интересно, кто-нибудь может помочь мне определить мою ошибку
Вот мой код для импорта файла.
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;
}
}
Я почти уверен, что это просто опечатка где-то, но после тщательного прочесывания длянесколько раз я не мог его заметить.Я впервые пытаюсь работать с вектором внутри вектора.Может быть, я что-то упустил понял?Я не знаю
Любая помощь будет высоко ценится.Либо вы знаете, что не так, либо у вас есть лучший способ добиться того же результата.
Заранее спасибо.