我正在尝试读取只有一列的文件,并将其写入3列的终端。我决定将一列读入单独的vector<string>
。然后将vector string
放入一个vector<vector <string> >
,然后再写到终端。
我知道这应该是一个公寓里的家务的名单,因此我知道我可以通过读取15行来分割文件,然后我开始阅读另一个向量。但是,经理可以更改职务/家务的数量,因此我不知道我需要多少vector<string>
,所以我不能只有vector<strings>
预设的数量Duty1
P1
P1
P1
...
Duty2
P2
P2
P2
...
Duty3
P3
P3
P3
...
*
声明。
.dat文件的格式为
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;
}
}
以下是我将其显示到终端的代码
{{1}}
我几乎可以肯定这只是一个错字,但经过多次仔细梳理,我无法发现它。这是我第一次尝试使用矢量内的矢量。也许我想念一些东西?我不知道
非常感谢任何帮助。要么你知道什么是错的,要么你有更好的方法来实现相同的结果。
提前致谢。
答案 0 :(得分:0)
您需要在某个地方拨打temptVec.clear()
。