amputee video sex:ifstream如何得到文本文件的总行数

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 06:43:20
没有直接的方法吗?这方法不太好,若一行超过line的大小,那不就不正确了。若把line设置太大,又浪费空间,我现在用的就是这个方法来算其行数的。我要测试的是上几十万行的数据,这方法效率不太行吧。

ifstream在原理上只是一段buffer,所以它不会真接算出文件有多少行的.而且实际上数据也是不分行的,只是有分行符.如果你用line[]装不下,用std::string中
string是可以的.而且有ignore方法,getline方法也用来吃一行数据,并不把读出的数据放入字符组,或者向下peek看读出的是不是换行符.

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
int count = 0;
char file[32], line[128];

ifstream outfile;
if( argc>1 )
strcpy(file, argv[1]);
else
strcpy(file, "test.txt");

cout << "begin to open file " << file << endl;
outfile.open(file);
while(!outfile.eof())
{
outfile.getline(line, sizeof(line));
count++;
}

cout << "line = " << count << endl;

return 0;
}

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int CountLines(char *filename)
{
ifstream ReadFile;
int n=0;
char line[512];
string temp;
ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件
if(ReadFile.fail())//文件打开失败:返回0
{
return 0;
}
else//文件存在
{
while(getline(ReadFile,temp))
{
n++;
}
return n;
}
ReadFile.close();
}
void main()
{
cout<<"comn.txt的行数为: "<<CountLines("comn.txt")<<endl;
cin.get();
}