转载:如何一行一行地读取文本文件中的内容呢

如何一行一行地读取文本文件呢?

楼主vcfresh(fresh) 2001-06-18 11:48:00 在 VC/MFC / 基础类 提问

    如何一行一行地读取文本文件中的内容呢?  
  请给出相关代码? 问题点数:20、回复次数:15Top

<script src="http://www.80diy.com/js/banner_comm.js" language="javascript" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script> width="728" scrolling="no" height="90" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3814784377435186&dt=1179219245625&lmt=1164894707&prev_fmts=336x280_as&format=728x90_as&output=html&channel=0427961622&pv_ch=0427961622%2B&url=http%3A%2F%2Fwww.80diy.com%2Fhome%2F20010618%2F11%2F162395.html&color_bg=FFFFFF&color_text=000000&color_link=333333&color_url=999999&color_border=FFFFFF&ad_type=text&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fcomplete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26q%3DCString%2B%25E8%25AF%25BB%25E5%258F%2596%25E6%2596%2587%25E6%259C%25AC%25E6%2596%2587%25E4%25BB%25B6%26btnG%3DGoogle%2B%25E6%2590%259C%25E7%25B4%25A2%26meta%3D&cc=100&flash=9&u_h=1024&u_w=1280&u_ah=957&u_aw=1280&u_cd=32&u_tz=480&u_his=1&u_java=true&u_nplug=27&u_nmime=148" name="google_ads_frame">

1 楼maxsuperkiller(狸猫)回复于 2001-06-18 11:57:00 得分 0

CFile   file;  
  char   buffer[102];  
  file.Open("文件名",CFile::Text);  
  do  
  {  
          file.Read(buffer,100);  
          strcat(buffer,"/n");  
  }while(file.IsEof());Top

2 楼vcfresh(fresh)回复于 2001-06-18 12:06:00 得分 0

上面的老兄代码有错,即使用strstr也不能用strcat吧  
  还有如果一行的buffer超过100,那也是错误的  
   
  如何逐行读入数据,有没有比较好的算法呢?Top

3 楼ahphone(阿丰--重出江湖,陌生的容颜)回复于 2001-06-18 12:16:00 得分 0

CStdioFile   Class   Members  
  ReadString   Reads   a   single   line   of   text.    
  WriteString   Writes   a   single   line   of   text.    
  Top

4 楼attackboy(我像是飘在城市的一片尘埃)回复于 2001-06-18 12:39:00 得分 0

u   can   use   the   api   function   for   reading   or   writting   just   like   an   ini   fileTop

5 楼waxmxinyu(飞鱼)回复于 2001-06-18 12:50:00 得分 0

用CStdioFile吧,  
  BOOL   CStdioFile::ReadString(CString&   rString)  
  挺好用的。  
  Top

6 楼waxmxinyu(飞鱼)回复于 2001-06-18 12:52:00 得分 5

CString   str;  
  CStdioFile   file;  
  file.Open("***.***",CFile::modeRead);  
  file.ReadString(str);Top

7 楼duststar(bug)回复于 2001-06-18 12:55:00 得分 5

#define   MAX   999  
  fstream   iof;  
  char   bb[MAX];  
  iof.getline(bb,MAX);  
  不需要用vc类裤:)Top

8 楼attackboy(我像是飘在城市的一片尘埃)回复于 2001-06-18 13:06:00 得分 0

请注意:是一行一行的,而不是一行的读。如果要读一行,由于确定不了长度,仅仅需要一个CSTING转换就可以办到!  
  Top

9 楼wangyi03(西湖上划船的)回复于 2001-06-18 13:20:00 得分 0

用while一个一个字符的读,直到读到回车换行Top

10 楼SmartHeart(女孩其实很傻,不知道谁真的爱她!)回复于 2001-06-18 13:25:00 得分 0

fgets!!!!!Top

11 楼vcfresh(fresh)回复于 2001-06-18 14:30:00 得分 0

CString   str;  
  CStdioFile   file;  
  file.Open("***.***",CFile::modeRead);  
  file.ReadString(str);    
   
  用CStdioFile很好用,但如何判断已经读到文件末尾了呢?Top

12 楼vcfresh(fresh)回复于 2001-06-18 15:01:00 得分 0

??Top

13 楼111222(www.111222.cn)回复于 2001-06-18 15:05:00 得分 10

CString   str1,str2;  
  CStdioFile   file;  
  file.Open("***.***",CFile::modeRead);  
  while(file.ReadString(str2))  
  {  
          str1   =   str1   +"/r/n"+   str2;  
  }  
  file.Close();  
  AfxMessageBox(str1);//显示出来  
   
  给分吧!!!!  
   
  Top

14 楼personnel(无忌)回复于 2001-06-18 15:07:00 得分 0

用feof()   判断文件结束。Top

15 楼aceplus(飞狼0723)回复于 2001-06-18 15:08:00 得分 0

//   .h  
   
  #include   "afxtempl.h"  
   
  class   CTextDoc   :   public   CDocument  
  {  
  ...  
  public:  
        ...  
        virtual   void   Serialize(CArchive&   ar);       //   overridden   for   document   i/o  
        ...  
  public:  
      //...  
      CList   <CString,CString&>   m_text;  
      ...  
  }  
   
   
  //   .cpp  
  void   CTextDoc::Serialize(CArchive&   ar)  
  {  
  CString   str;  
  if   (ar.IsStoring())  
  {  
  //   TODO:   add   storing   code   here  
  POSITION   pos=m_text.GetHeadPosition();  
  while(pos!=NULL)  
  {  
  str=m_text.GetNext(pos);  
  ar.WriteString(str+CString("/r/n"));  
  }  
  }  
  else  
  {  
  //   TODO:   add   loading   code   here  
  while(ar.ReadString(str))  
  {  
  //   将文本读入m_text  
  m_text.AddTail(str);  
  }  
  }  
  }  
   
  呵呵,我也来充一把大虾!!  
   
  Top

你可能对以下的问题也比较感兴趣....
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值