我在这里遇到了一些麻烦。我有一个看起来像这样的文件(这里是一个片段)
Sophia F 22158
Emma F 20791
Isabella F 18931
Jacob M 18899
Mason M 18856
Ethan M 17547
我希望将每个名称和名称的相应数字放入单独的向量中。例如,我将有4个向量: 1代表女性的名字,1代表女性的数字,男性和男性的数字相同。 (总共4个)
我有这个代码,它将遍历文件并提取这些元素并将它们放在向量中。
for (int i = 0; i < numTimes; i++) {
getline (inputFile, inputLine);
ss.str(inputLine); //ss is a string stream
ss >> name >> gender >> popularity;
if (gender == 'M') {
mNames[i] = name;
mFrequency[i] = popularity;
} else if (gender == 'F') {
fNames[i] = name;
fFrequency[i] = popularity;
}
ss.clear();
}
我使用这种方法打印出来:
cout << counter << " Most Popular Baby Names" << endl << endl;
cout << left << setw(15) << "Girls" ;
cout << right << setw(9) << "Frequency" <<" ";
cout << left << setw(15) << "Boys";
cout << right << setw(9) << "Frequency" << endl;
for (int i = 0; i < counter; i ++) {
cout << left << setw(15) << fNames[i] ;
cout << right << setw(9) << fFreq[i] <<" ";
cout << left << setw(15) << mNames[i];
cout << right << setw(9) << mFreq[i] << endl;
{
然后我得到了这个输出: http://i.stack.imgur.com/2x0ta.png
但我希望它是这样的: http://i.stack.imgur.com/OSIX9.png
所以我想我要么在打印之前要经过并删除这些向量中的所有空格/ 0,要么我在打印时需要检查。有没有人有任何指示?
答案 0 :(得分:0)
解决了,谢谢你们。
我使用了两个单独的while循环,每个循环一个。在它们之间我将ifstream重置回到开头。这样,它会一直持续到每个向量都有5个非零元素。