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

在读文件使用getline时遇到的有关问题

2012-10-07 
在读文件使用getline时遇到的问题?以前读一个文件,经常使用的风格是int read_file(const char *file){//判

在读文件使用getline时遇到的问题

?

以前读一个文件,经常使用的风格是

int read_file(const char *file){//判断file是否为空,  此处省略 const int LEN=1024; char text[LEN]="";  ifstream fin(file);//判断 fin 是否已打开, 否则退出。 此处省略//下面按行读取文件 while (!fin.eof()){ if (fin.getline(text, LEN).good()==false()) //判断流是否正常  break; //..... }?

?但是遇到的问题就是,当我一行文件的长度超过定义的 LEN 的长度时,在getline以后就会出错,具体的信息可参照getline说明。为了防止 出现这种情况,我可以把 LEN 设置的大一些,但是多大才算大呢,你或者永远也估计不到一行中最多多少字符(同时你要考虑一下,是否太浪费空间)。当遇到这种情况的时候,那我们可以换用一下getline函数

原来的getline是 ifstream 类的成员函数, 要求参数是字符指针, 现在我们可以换成字符串

getline(fin, s)

int read_file(const char *file){//判断file是否为空,  此处省略// const int LEN=1024;// char text[LEN]=""; char *text=NULL; int len=0; string s; ifstream fin(file);//判断 fin 是否已打开, 否则退出。 此处省略//下面按行读取文件 while (!fin.eof()){  s.clear(); if (getline(fin,s).good()==false()) //判断流是否正常  break;  //如果想按照字符串的形势处理这一行文件, 那我们就用指针来指向它  len=s.length();  text=new char[len+1];//判断是否分配成功。省略  bzero(text, len+1);   strncpy(text, s.c_str(), len);//.....  delete []text; //别忘记释放空间}fin.close();return 0;}

?

?不过动态分配存储空间,应该速度会慢一些

?

?

热点排行