分享

C++ 流

 changqiong0606 2012-07-15

/*----------------------------------字符文件操作例子------------------------------*/
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;

void main()//向字符文件输出数据
{
 ofstream f1("d:\\VC2008\\wr1.dat");//定义输出文件流并打开。
 if(!f1)
 {
  cerr<<"wr1.dat not open!"<<endl;
  exit(1);
 }
 for(int i=0;i<20;i++)
  f1<<i<<" ";
 f1.close();//关闭f1对应的文件
}
*/
//从键盘输入文本字符到wr2.dat,直到从键盘按下ctrl+c(代表文件结束符EOF)为止
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
void main()//向字符文件输出数据
{
 char ch;
 ofstream f2("D:\\VC2008\\wr2.dat");
 if(!f2)
 {
  cerr<<"file wr2.dat not open!"<<endl;
  exit(1);
 }
 cout<<"input string:(ctrl+c end)"<<endl;
 ch = cin.get();//从cin流中提取一个字符到ch中
 while(ch!=EOF)
 {
  f2.put(ch);//把ch字符写入到f2流中,此语句也可以用 f2<<ch代替
  ch = cin.get();//继续从cin流提取下个字符到ch中
 }
 f2.close();//关闭f2所对应的文件
}*/
/*-------------------------------------------------------------------------------------*/
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;

void main()//从字符文件输入数据
{
 ifstream f1("d:\\VC2008\\wr1.dat");//定义输入文件流,并打开相应文件
 if(!f1)
 {
  cerr<<"file not open!"<<endl;
  exit(1);
 }
 int x;
 while(f1>>x)//依次从文件输入整数到x(自动跳过空白字符),当读到文件结束符时,表达式值为0
 {
  cout<<x<<' ';
 }
 cout<<endl;
 f1.close();
}*/
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;

void main()
{
 ifstream f2("d:\\VC2008\\wr2.dat",ios::in);//ios::nocreate(vs2008无) ifstream中的open函数默认打开就是不创建文件
 if(!f2)
 {
  cerr<<"file not open!"<<endl;
  exit(1);
 }
 char ch;//用ch读入字符
 int i=0;
 while(f2.get(ch))
 {
  cout<<ch;
  if(ch=='\n')
   i++;
 }
 cout<<endl<<"lines:"<<i<<endl;
 f2.close();
}*/
//从键盘输入若干行字符到一个二维字符数组a,然后分别统计出a中保存的字母、数字和其他字符的个数
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;

void main()
{
 int n;
 cout<<"待输入文本行数:";
 cin>>n>>ws;//操纵符ws读取输入n值后的换行符
 char (*a)[80] = new char [n][80];
 int i;
 for(i=0;i<n;i++)
  cin.getline(a[i],80);
 int c1,c2,c3;
 c1=c2=c3=0;
 for(i=0;i<n;i++)
 {
  char *p =a[i];
  char ch = *p;
  while(ch)
  {
   if(ch>=65 && ch<=90 || ch>=97 && ch<=122)
    c1++;//统计字母个数
   else if(ch>=48 && ch<=57)
    c2++;//统计数字个数
   else
    c3++;//统计其他字符个数
   ch = *++p;//得到该行的下一个字符
  }
 }
 cout<<endl;
 cout<<"c1="<<c1<<",c2="<<c2<<",c3="<<c3<<endl;
}*/

/*----------------------------------字节文件操作例子------------------------------*/
/*#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;

void main()//写入(输出)到字节文件
{
 ofstream f1("d:\\VC2008\\shf1.dat",ios::out|ios::binary);//定义输出文件流,并打开相应的字节文件
 if(!f1)
 {
  cerr<<"file not open!"<<endl;
  exit(1);
 }
 int a[10]={11,23,44,55,66,7,2,33,44,52};
 for(int i=0;i<10;i++)
  f1.write((char *)&a[i],sizeof(int));
 f1.close();
}*/
//对上面shf1.dat文件中保存的数求出最大值、最小值和平均值
/*#include<stdlib.h>
#include<fstream>
#include<iostream>
using namespace std;

void main()//把字节文件的内容输入到内存
{
 ifstream f1("d:\\VC2008\\shf1.dat",ios::in|ios::binary);//定义输入文件流
 if(!f1)
 {
  cerr<<"file not open!"<<endl;
  exit(1);
 }
 int x,max,min;
 float mean;
 f1.seekg(0,ios::end);//将文件指针移到文件尾,此时文件指针位置就是按字节计算的文件长度
 int n=f1.tellg()/sizeof(int);//n为按整型大小计算的文件长度
 if(n==0)
 {
  cerr<<"输入文件为空!"<<endl;
  exit(1);
 }
 f1.seekg(0);//将文件指针移到文件开始位置
 f1.read((char *)&x,sizeof(int));//读第一个整数
 max=min=x;
 mean=(float)x/n;
 for(int i=1;i<n;i++)
 {
  f1.read((char *)&x,sizeof(int));
  if(x>max)
   max = x;
  else if(x<min)
   min = x;
  mean += (float)x/n;
 }
 cout<<"maximum:"<<max<<endl;
 cout<<"minimum:"<<min<<endl;
 cout<<"mean:"<<mean<<endl;
 f1.close();
}*/
//从一个字符串流中输入用逗号分开的每个整数并显示出来
/*#include<iostream>
#include <strstream>
#include<stdlib.h>
using namespace std;
void main()
{
 char a[]="23,2,23  ,34,11,54,23,55 @";
 cout<<a<<endl;
 istrstream sin(a);//定义一个输入字符串流sin,使用的字符数组为a
 char ch=' ';
 int x;
 while(ch!='@')//@字符作为字符串流结束标志
 {
  sin>>ws>>x>>ws;//从流中读入一个整数,并使用操作符ws读取一个整数前后的空白字符
  cout<<x<<' ';
  sin.get(ch);//从sin流中读入一个字符,实际读取的是','或'@'字符
 }
 cout<<endl;
}*/
//从一个字符串中得到每个整数,并把它们依次存入到一个字符串流中,最后向屏幕输出这个字符串流
/*
a;sdkfas;d 2 2234 44 55 3 @
2 2234 44 55 3 @
烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘟;sdkfas;d 2 2234 44 55 3 @
*/
#include<strstream>
#include<iostream>
using namespace std;

void main()
{
 char a[50];
 char b[50];
 istrstream sin(a);//定义一个输入字符串流sin,使用的字符数组为a
 ostrstream sout(b,sizeof(b));//定义一个输出字符串流sout,使用的字符数组为b

 cout<<"input string+numbers:";

 cin.getline(a,sizeof(a));
 char ch=' ';
 int x;
 while(ch!='@')//使用@作为结束标志
 {
  if(ch >= 48 && ch<=57)//是0-9的数字
  {
   sin.putback(ch);//把刚读入的一个数字压回流中
   sin>>x;//从流中读入一个整数,当碰到非数字字符时,认为一个整数结束
   sout<<x<<' ';//将x输出到字符串流sout中
  }
  sin.get(ch);//从sin流中读入下一个字符
 }
 sout<<'@'<<endl;
 cout<<b<<endl;//输出字符串流sout对应的字符串
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多