使用ifstream和getline读取文件内容

转自:http://hi.baidu.com/xaioxain/blog/item/f08d3a4c5003c2ffd72afce3.html

假设有一个叫 data.txt 的文件, 它包含以下内容: 

  Fry: One Jillion dollars.
 [Everyone gasps.]
 Auctioneer: Sir, that's not a number.
  数据读取, 测试 。


以下就是基于 data.txt 的数据读取操作:

  #include  <  iostream  > 
 #include 
<  fstream  > 
 #include 
< string > 
 
 
using  namespace  std;
 
 
//  输出空行 
 
void  OutPutAnEmptyLine()
 
{
      cout
  <<  "  /n  "  ;
 }
 
 
 
//  读取方式: 逐词读取, 词之间用空格区分
 
//  read data from the file, W ord B y W ord
 
//  when used in this manner, we'll get space-delimited bits of text from the file
 
//  but all of the whitespace that separated words (including newlines) was lost. 
 
void  ReadDataFromFileWBW()
 
{
      ifstream fin(
  "  data.txt  "  );  
     
  string  s;  
     
  while  ( fin  >>  s ) 
   
  {    
          cout 
<<  "  Read from file:  "  <<  <<  endl;  
      }
 
 }
 
 
 
//  读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分
 
//  If we were interested in preserving whitespace, 
 
//  we could read the file in L ine-B y-L ine using the I/O getline() function. 
 
void  ReadDataFromFileLBLIntoCharArray()
 
{
      ifstream fin(
  "  data.txt  "  ); 
     
  const  int  LINE_LENGTH  =  100 
     
  char  str[LINE_LENGTH];  
     
  while  ( fin.getline(str,LINE_LENGTH) )
  
  {    
          cout 
<<  "  Read from file:  "  <<  str  <<  endl;
      }
 
 }
 
 
 
//  读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分
 
//  If you want to avoid reading into character arrays, 
 
//  you can use the C++ string getline() function to read lines into strings 
 
void  ReadDataFromFileLBLIntoString()
 
{
      ifstream fin(
  "  data.txt  "  );  
     
  string  s;  
     
  while  ( getline(fin,s) )
   
  {    
          cout 
<<  "  Read from file:  "  <<  <<  endl; 
      }
 
 }
 
 
 
//  带错误检测的读取方式
 
//  Simply evaluating an I/O object in a boolean context will return false 
 
//  if any errors have occurred 
 
void  ReadDataWithErrChecking()
 
{
     
  string  filename  =  "dataFUNNY  .txt  "  ;  
      ifstream fin( filename.c_str());  
     
  if  !  fin ) 
   
  {   
          cout 
<<  "  Error opening  "  <<  filename  <<  "  for input  "  <<  endl;   
          exit(
  -  1  );  
      }
 
 }
 
 
 
int  main()
 
{
      ReadDataFromFileWBW(); 
//  逐词读入字符串 
 
     OutPutAnEmptyLine();  //  输出空行 
 

      ReadDataFromFileLBLIntoCharArray(); 
//  逐词读入字符数组 
 
     OutPutAnEmptyLine();  //  输出空行 
 

      ReadDataFromFileLBLIntoString(); 
//  逐词读入字符串 
 
     OutPutAnEmptyLine();  //  输出空行 
 

      ReadDataWithErrChecking(); 
//  带检测的读取 
 
      return  0  ;
 }


输出结果为:

Read from file: Fry:
Read from file: One
Read from file: Jillion
Read from file: dollars.
Read from file: [Everyone
Read from file: gasps.]
Read from file: Auctioneer:
Read from file: Sir,
Read from file: that's
Read from file: not
Read from file: a
Read from file: number.
Read from file: 数据读取,
Read from file: 测试
Read from file: 。
 

Read from file: Fry: One Jillion dollars.
Read from file: [Everyone gasps.]
Read from file: Auctioneer: Sir, that's not a number.
Read from file: 数据读取, 测试 。

Read from file: Fry: One Jillion dollars.
Read from file: [Everyone gasps.]
Read from file: Auctioneer: Sir, that's not a number.
Read from file: 数据读取, 测试 。

Error opening dataFUNNY.txt for input 
Press any key to continue

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值