设为首页 加入收藏

TOP

c++文件处理(八)
2012-11-03 14:40:15 来源: 作者: 【 】 浏览:2095
Tags:文件 处理


  例:下面程序实现对一个文本文件的多种操作,包括求文件长度、统计单词长度等功能。
  
  [cpp]
  
  #include<iostream>
  
  #include<fstream>
  
  using namespace std;
  
  void open(char str[])//打开文件函数,把文件内容传给str;
  
  {
  
  int i=0;
  
  ifstream f;
  
  f.open(“test.txt”,ios::in);//ifstream默认就是ios::in,此处可以省略
  
  if (!f)
  
  {
  
  cout《“not open”《endl;
  
  return ;
  
  }
  
  while (f)
  
  {
  
  f.get(str[i]);//一个一个取字符,包括空格。可参见myblog:cin\cin.get()\cin.getline()\getline()\gets()\getchar()用法集锦
  
  i++;
  
  }
  
  str[i]='\0';//在读到的字符串最末加上‘\0'.
  
  f.close();
  
  cout《str《endl;
  
  }
  
  int len(char str[])//求字符串长度函数
  
  {
  
  int temp=0;
  
  for(int i=0;'\0'!=str[i];i++)
  
  temp++;
  
  return temp;
  
  }
  
  int index(char a[],char b[])//找子串函数,返回子串首次出现的位置。
  
  {
  
  int i,j,temp;
  
  for(i=0;i<len(a)-len(b);i++)
  
  {
  
  temp=i;
  
  j=0;
  
  while(j<=len(b)&&a[temp]==b[j])//对i位置及后面的字符,逐个字符判断是否字串
  
  {
  
  temp++;
  
  j++;
  
  }
  
  if(j==len(b))//找到
  
  return i;
  
  }
  
  return -1;
  
  }
  
  int count(char str[])//统计单词个数
  
  {
  
  int i,c=0;
  
  for(i=0;i<len(str);i++)
  
  if(' '==str[i])
  
  c++;
  
  return c+1;//以单词之间空格个数+1表示单词个数。比如3个单词间有2个空格。
  
  }
  
  void output(char a[])//输出当前文本
  
  {
  
  for(int i=0;i<len(a);i++)
  
  cout《a[i];
  
  cout《endl;
  
  }
  
  void output(char a[],int)//输出第一个单词
  
  {
  
  for(int i=0;i<len(a);i++)
  
  if(' '==a[i])
  
  break;
  
  else
  
  cout《a[i];
  
  cout《endl;
  
  }
  
  int main()
  
  {
  
  char m[100];
  
  char n[]=“ok”;
  
  open(m);
  
  cout《“字符串长度:”《len(m)-1《endl;
  
  cout《“目标单词首次出现的位置:”《index(m,n)《endl;
  
  cout《“单词数:”《count(m)《endl;
  
  cout《“当前文本是:”《endl;
  
  output(m);//输出当前文本
  
  cout《“第一个单词是:”;
  
  output(m,1);//输出第一个单词
  
  system(“pause”);
  
  return 0;
  
  }
  
  3.2读写二进制文件
  
  二进制文件是一种不能用普通的字处理软件进行编辑、占空间较小的文件。二进制文件与文本文件的区别有以下几点:
  
  1)文本文件是字符流,二进制文件是字节流。
  
  2)文本文件在输入时,将回车和换行两个字符转换为字符“\n”,输出是将字符“\n”转换为回车和换行两个字符,二进制文件不做这种转换。
  
  3)文本文件遇到文件结束符时,用get()函数返回一个文件结束标志EOF,该标志的值为-1.二进制文件用成员函数eof()判断文件是否结束。其中,eof()函数的原型为:int eof();
  
  4)当文件达到末尾时,返回一个非零值;未达到末尾时返回零值。当从键盘输入字符时,结束符为<Ctrl>+z组合键。
  
  任何文件,都能以文本方式或者二进制方式打开。对以二进制方式打开的文件,有两种方式进行读写操作:一种是使用函数get()和put(),另一种是使用函数read()和write()。
  
  3.2.1使用get()和put()读写二进制文件
  
  get()函数是输入流类istream中定义的成员函数,作用是从与流对象连接的文件中读出数据,get()实现的功能是从流中每读出一个字节或一个字符放入引用&ch中,返回一个流输入对象值。在c++中,get()函数原型为:
  
  istream &get(unsigned char &ch);
  
  put()函数是输出流类ostream中定义的成员函数,作用是向与流对象连接的文件中写入数据,put()实现的功能是每次将一个字节或一个字符写入流中,同时返回一个流输入对象值。在c++中,put()函数的原型为:
  
  istream &put(char ch);
  
  get()函数和put()函数都只能对单个字符或者单个字节进行操作,如果需要实现多字符的操作,可通过循环语句来实现。
  

        

首页 上一页 5 6 7 8 9 10 下一页 尾页 8/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces 225D Snake.. 下一篇字符串字典顺序比较

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: