/*----------------------------------字符文件操作例子------------------------------*/ /*#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对应的字符串 }
|