while 循环应该在读取我的文件中的第三行后结束,但为什么它是 运行 第四次?
The while loop should end after reading the third line in my file but why does it run the fourth time?
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 循环应该在第三次迭代后结束,但它在第四次迭代后终止
问题出在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
}
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 循环应该在第三次迭代后结束,但它在第四次迭代后终止
问题出在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
}