0
我在這裏遇到了一些麻煩。我有一個看起來像這樣(這裏有一個片段)的文件使用iomanip格式化矢量輸出
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在這些向量中,或者我需要在打印時檢查。有沒有人有任何指針?
您需要對這兩個向量進行排序,然後打印出頂部5.我會建議在做這樣的事情時不要使用平行向量,而應使用OOP來完成此操作。 – smac89 2014-11-06 00:49:00
如果您的'counter'元素少於'用'counter'零填充一個字符串數組(並且你想'打印'counter'元素),沒有辦法解決。考慮減少「櫃檯」數量的最大值,你可以在文件中找到 – 2014-11-06 00:54:21
我很想學習一種更有效的方法,但我並沒有真正的知識,而且我的老師非常具體地使用4個向量來完成這個任務。文件中的名字已經被排序,所以有一些方法我可以這樣說: if(mFreq!= 0) mName [nextEmptyElement] = name; ? – amantonas 2014-11-06 00:54:22