文件无法正确读取C ++ ifstream

时间:2013-04-17 10:47:30

标签: c++

我有一个应用程序,我正在使用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变量。

4 个答案:

答案 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)

&lt; p&gt;如果输入不正确(如果遇到char而不是数字),则&gt;&gt;操作失败并且&lt; code&gt; fin&gt;&gt; TMP&LT; /代码&GT;返回false,从而过早地打破循环。&lt; / p&gt; &lt; p&gt;此外,您应该在重新打开文件之前关闭该文件。我相信你需要/想要的功能仅仅是&lt; code&gt; fin.seekg(0)&lt; / code&gt;。&lt; / p&gt; &lt; p&gt;除了您的代码可以简化为:&lt; / p&gt; &lt; pre&gt;&lt; code&gt; int temp; ifstream fin(“rnum.txt”); 矢量&lt;诠释&GT; iArray; while(fin&gt;&gt; tmp) {     iArray.push_back(TMP); } std :: cout&lt;&lt; “显示计数:”&lt;&lt; iArray.size(); &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;正如@trojanfoe在&lt; a href =“https://stackoverflow.com/a/16058205/6459731”&gt; https://stackoverflow.com/a/16058205/6459731< / a&gt;&lt ; / p为H.