【发布时间】:2013-09-26 04:47:36
【问题描述】:
首先,我的文件中有一个数据...
1|Malaysia|UK|One-Way|20|6|20|6|2000|12|12|12|12|12|
以上数据是我文件里面的数据
但是当我计算数据时,有一个重复的数据......
1|Malaysia|UK|One-Way|20|6|20|6|2000|12|12|12|12|12|
1|Malaysia|UK|One-Way|20|6|20|6|2000|12|12|12|12|12|
那么当我 cout 数据时有什么问题??? 这是代码......
void Flight::displayFlight(vector <Flight> &flightProfile)
{
string readFlightID, readPrice, readBusinessList, readBusinessWaitingList, readEconomicList, readEconomicWaitingList;
flightProfile.erase(flightProfile.begin(),flightProfile.end());
ifstream inFlight("Flight.txt");
if(inFlight.fail()) return;
while(!(inFlight.eof()))
{
getline(inFlight,readFlightID,'|');
istringstream(readFlightID)>>flightID;
getline(inFlight,departure,'|');
getline(inFlight,destination,'|');
getline(inFlight,flightType,'|');
getline(inFlight,readBusinessList,'|');
istringstream(readBusinessList)>>businessList;
getline(inFlight,readBusinessWaitingList,'|');
istringstream(readBusinessWaitingList)>>businessWaitingList;
getline(inFlight,readEconomicList,'|');
istringstream(readEconomicList)>>economicList;
getline(inFlight,readEconomicWaitingList,'|');
istringstream(readEconomicWaitingList)>>economicWaitingList;
getline(inFlight,readPrice,'|');
istringstream(readPrice)>>price;
getline(inFlight, day,'|');
getline(inFlight, month,'|');
getline(inFlight, year,'|');
getline(inFlight, hour,'|');
getline(inFlight, min,'|');
inFlight.ignore(numeric_limits<streamsize>::max(), '\n');
cout<<flightID<<departure<<destination<<flightType<<businessList<<businessWaitingList<<economicList<<economicWaitingList<<price<<day<<month<<year<<hour<<min<<endl;
}
inFlight.close();
}
【问题讨论】:
-
当我看到问题中的“重复”一词时,我知道这将是
eof()-abuse,然后才打开它。 -
@KerrekSB LOL...这是什么意思?
-
eof()并不代表您的想法,也不会按照您的想法工作。你会在这个网站上找到数以千计的类似问题,或者你可以自己阅读手册...... -
@KerrekSB 公平地说,您还会发现 1000 多个教程、示例代码等告诉您这是从文件中读取的正确方法。这个想法似乎很持久,尽管它很容易被证明是错误的,但我认为这必须作为一个糟糕的 API 设计。人们就是不明白。
标签: c++ file vector fstream getline