我这里有点麻烦。我有一个如下所示的文件(这是一个代码片段)
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之前,我需要检查一下,或者我需要在打印输出时进行检查。有谁有什么建议吗?
发布于 2014-11-06 09:14:33
解决了,谢谢你们。
我使用了两个单独的while循环,每个循环对应一组数组。在它们之间,我将ifstream重置回开头。这样,它就会遍历到每个向量都有5个非零元素。
https://stackoverflow.com/questions/26769899
复制相似问题