這個問題在這里已經有了答案: 為什么 iostream::eof 在回圈條件(即`while (!stream.eof())`)中被認為是錯誤的? (5 個回答) 8 小時前關閉。
void Load_from_file()
{
ifstream fin("Data.txt");
//fin.open("Data.txt");
if (!fin.is_open())
cout << "Error while opening the file" << endl;
else
{
int f_id;
int u_id;
int priority;
char acc_type;
char delim;
while (!fin.eof())
{
fin >> f_id;
fin >> delim; // skipping the comma
fin >> u_id;
fin >> delim;
fin >> priority;
fin >> delim;
fin >> acc_type;
}
fin.close();
}
}
檔案中的資料是:
7551,10,3,R
25551,3,10,W
32451,4,7,R
while 回圈應該在第三次迭代后結束,但在第四次迭代后終止
uj5u.com熱心網友回復:
問題是while陳述句中的條件
while (!fin.eof())
{
fin >> f_id;
fin >> delim; // skipping the comma
fin >> u_id;
fin >> delim;
fin >> priority;
fin >> delim;
fin >> acc_type;
}
fin.eof() 條件可以在讀取最后一個資料后出現在 while 回圈體中。
要么你需要寫
while (fin >> f_id >> delim >> u_id >> delim >>
priority >> delim >> acc_type );
或者讀取整行然后使用字串流輸入各種資料會更好
while ( std::getline( fin, line ) )
{
std::istringstream iss( line );
iss >> f_id;
// and so on
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/392257.html
