我有一个应用程序,我正在使用ifstream来读取文件。 我在每行的文件中有1000个数字。我的应用程序应该阅读所有这些行。
但是当我的行数小于800时,它将计数显示为0 为什么会这样。 代码如下。
int tmp, count=0,ucount=0;
ifstream fin("rnum.txt");
while(fin >> tmp)
{
count++;
}
cout<<"showing count: "<<count<<endl;
ucount=count;
fin.open("rnum.txt");
int i=0;
cout<<"Before entering loop"<<count<<endl;
while(fin >> tmp){
iArray[i++]=tmp;
}
当我读取1000行的文件时,它只读取720行。我不明白为什么它这样阅读。
代码中是否有任何错误。
我的要求是将行数COUNT取为ucount变量。
答案 0 :(得分:1)
要使用getline
函数计算文件中的行数。
#include<string>
std::string line;
while (std::getline(fin, line))
{
++count;
}
答案 1 :(得分:0)
这不会解决您的错误,因为我认为这与输入文件本身有关,但是一次读取文件至少会使它更快:
vector<int> iArray;
int tmp;
ifstream fin("rnum.txt");
while (fin >> tmp)
{
iArray.push_back(tmp);
}
cout << "showing count: " << iArray.size() << endl;
答案 2 :(得分:0)
在第二次打开文件之前需要先用fin.close()
关闭文件,或者让文件保持打开状态,重置读指针并清除eof标志。
答案 3 :(得分:0)