首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么高效计算文件的行数

2012-02-12 
如何高效计算文件的行数用getline进行统计,但是会遇到如下的问题:若一个文件总行数为10万行,除其中一行的

如何高效计算文件的行数
用getline进行统计,但是会遇到如下的问题:
若一个文件总行数为10万行,除其中一行的长度为4000个字节以外,其他所有行的字节数都小于100,那么我getline时的语句中字节数就必须设为大于4000,如:
inputfile.getline(line,   MAXSIZE);   其中,MAXSIZE就必须大于4000,否则出现死循环。
但其实这个值越小处理的就越快。

请问有什么高效的方法对付上面这种情况吗?

[解决办法]
#include <iostream>
#include <fstream>
#include <algorithm>

int main(int argc, char *argv[])
{
using namespace std;
ifstream fin(argv[1]);
int numlines=count(istreambuf_iterator <char> (fin),istreambuf_iterator <char> (), '\n ');
std::cout < < numlines;

}

[解决办法]
统计 \n啊
[解决办法]
一次读5000个字节,然后计算 '\n ',循环往复直到读完。
[解决办法]
试试这个吧
FILE * f = fopen( "1.txt ", "rb ");
char buf[4000];

int len = 0;
int c = 0;
while ((len = fread(buf, 1, sizeof(buf), f)) != 0)
{
c += count(buf, buf + sizeof(buf), '\n ');
}
cout < < c;

热点排行