使用iomanip格式化矢量输出

时间:2014-11-06 00:44:18

标签: c++ vector

我在这里遇到了一些麻烦。我有一个看起来像这样的文件(这里是一个片段)

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,要么我在打印时需要检查。有没有人有任何指示?

1 个答案:

答案 0 :(得分:0)

解决了,谢谢你们。

我使用了两个单独的while循环,每个循环一个。在它们之间我将ifstream重置回到开头。这样,它会一直持续到每个向量都有5个非零元素。