流的格式化iomanip.h中预定义的格式控制符中预定义的格式控制符9/10/2024134.3 I/O流操作流操作n控制输出格式的流成员函数控制输出格式的流成员函数 9/10/2024144.3 I/O流操作流操作n设置格式状态的格式标志设置格式状态的格式标志 9/10/2024154.3 I/O流操作流操作【【例例4.2】】用格式控制符用格式控制符setw、、hex、、dec指定输出数据指定输出数据的域宽和数制的域宽和数制include#includevoid main(void){ int a=256,b=128;cout < //因因iomanip.h中包含有中包含有iostream.h,,所以该命令也可省略所以该命令也可省略 #include void main() { int x=30, y=300, z=1024; cout<
项分别指定宽度include #includeusing namespace std;void main(){ double values[]={1.23,35.36,653.7,4258.24}; char*names[]={"Zoot","Jimmy","Al","Stan"}; for(int i=0;i<4;i++) out<#includeusing namespace std;void main(){ double values[]={1.23,35.36,653.7,4258.24}; char*names[]={"Zoot","Jimmy","Al","Stan"}; for(int i=0;i<4;i++) { cout.width(10); cout.fill('*'); cout<
控制数据输出精度include#includeusing namespace std;void main(){ double values[]={1.23,35.36,653.7,4358.24}; char*names[]={"Zoot","Jimmy","Al","Stan"}; for(int i=0;i<4;i++)cout<void main(void){ int i,s; char t[80]; cout<<"输入一个整数:输入一个整数:"; cin>>i; s=cin.rdstate();cout<<"s="<>i; s=cin.rdstate(); } cout<<"num="<
函数put函数把一个字符写到输入函数把一个字符写到输入流中n Get()函数非格式化函数的功能与提取()函数非格式化函数的功能与提取运算符运算符“>>”很相像很相像 get函数在读入数据函数在读入数据时包括空白字符时包括空白字符 nGetline()函数getline成员函数的功能成员函数的功能是允许从输入流中读取多个字符,并且允许是允许从输入流中读取多个字符,并且允许指定输入终止字符(默认值是换行字符),指定输入终止字符(默认值是换行字符),在读取完成后,从读取的内容中删除该终止在读取完成后,从读取的内容中删除该终止字符 9/10/2024244.3.2 用流成员函数实现输入/输出用流成员函数实现输入/输出【【例例4.8】】put函数应用举例,有一个字符串函数应用举例,有一个字符串“ENGLISH”,要求按反序输出要求按反序输出include void main(){ char *p="ENGLISH"; for (int i=6;i>=0;i--) cout.put(*(p+i)); cout.put('\n');}运行结果:运行结果:HSILGNE。
9/10/2024254.3.2 用流成员函数实现输入/输出用流成员函数实现输入/输出【【例例4.9】】get函数应用举例,从键盘接收字符并输出函数应用举例,从键盘接收字符并输出includevoid main(){ char ch; while((ch=cin.get())!=EOF) cout.put(ch);}运行时输入:运行时输入:Abc xyz 123↙ ↙则输出结果:则输出结果:Abc xyz 1239/10/2024264.3.2 用流成员函数实现输入/输出用流成员函数实现输入/输出【【例例4.10】】getline函数应用举例,为输入流指定一个终止字符函数应用举例,为输入流指定一个终止字符本程序连续读入一串字符,直到遇到字符本程序连续读入一串字符,直到遇到字符“t”时停止,字符个数时停止,字符个数最多不超过最多不超过80个includevoid main(){ char line[100]; cout<<"Type a line terminated by 't' "<
↙ ↙输出结果:输出结果:abcdefg hhh9/10/2024274.4 文件流和文件的输入/输出文件流和文件的输入/输出 使用一个文件流,应遵循以下步骤:使用一个文件流,应遵循以下步骤:n 打开一个文件其目的是将一个文件流对象打开一个文件其目的是将一个文件流对象与某个磁盘文件联系起来与某个磁盘文件联系起来n 使用文件流对象的成员函数,将数据写入到使用文件流对象的成员函数,将数据写入到文件中或从文件中读取数据文件中或从文件中读取数据n 关闭已打开的文件,即将文件流对象与磁盘关闭已打开的文件,即将文件流对象与磁盘文件脱离联系文件脱离联系9/10/2024284.4 文件流和文件的输入/输出文件流和文件的输入/输出n定义一个文件对象例如:定义一个文件对象例如: ifstream infile; // 定义输入文件流对象定义输入文件流对象outfile ifstream infile((“filel.txt”)); ofstream outfile; fstream iofile; n 用文件流对象的成员函数用文件流对象的成员函数open()或构造函数,打开一或构造函数,打开一个文件。
例如:个文件例如: outfile.open(“file2.txt”);n 用提取、插入运算或成员函数对文件读写例如:用提取、插入运算或成员函数对文件读写例如:infile>>ch;n用完文件后,使用文件流对象的成员函数关闭文件例用完文件后,使用文件流对象的成员函数关闭文件例如:如:infile.close();9/10/2024294.4.1 用流成员函数实现输入/输出用流成员函数实现输入/输出n文件流类常用成员函数文件流类常用成员函数 9/10/2024304.4.1 用流成员函数实现输入/输出用流成员函数实现输入/输出n文件打开方式说明文件打开方式说明 9/10/2024314.4.4 文本文件的输入/输出(读写)文本文件的输入/输出(读写)【【例例4.11】】复制一个文本文件到一个目标文件当中复制一个文本文件到一个目标文件当中includevoid main(void){ char ch,f1[256],f2[256]; cout<<"请输入源文件名?请输入源文件名?"; cin>>f1; cout<<"请输入目标文件名?请输入目标文件名?"; cin>>f2; ifstream in(f1,ios::in | ios::nocreate); 9/10/2024324.4.4 文本文件的输入/输出(读写)文本文件的输入/输出(读写) ofstream out(f2); if(!in){ cout<<"\n不能打开源文件不能打开源文件:"<>ch) out<
求出文件中的这些实数之间用空格或换行符隔开求出文件中的这些实数的平均值和实数的个数实数的平均值和实数的个数includevoid main(void){float sum=0,t; int count=0; ifstream in("data1.txt",ios::in|ios::nocreate); if(!in) { cout<<"不能打开输入文件:不能打开输入文件:\n";return;} 9/10/2024344.4.4 文本文件的输入/输出(读写)文本文件的输入/输出(读写)while(in>>t) //依次读一个实数依次读一个实数{ sum+=t,count++;} cout<<"\n实数的平均值实数的平均值="<
文件后面追加信息include#includeusing namespace std; //std是是standard的缩写,标准的缩写,标准C++中必须存在的一个名字中必须存在的一个名字//空间的名字包含标准空间的名字包含标准C++类库所有的名字(类名、函数名类库所有的名字(类名、函数名等)int main(){ cout<<"Opening output file..."<
程序设计9/10/2024374.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写)n二进制文件的读操作用成员函数二进制文件的读操作用成员函数read():():istream& istream::read(char*t, int n);istream& istream::read(unsigned char*t, int n);istream& istream::read(signed char*t, int n);9/10/2024384.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写)n二进制文件的写操作用成员函数二进制文件的写操作用成员函数write():(): ostream& ostream::write(const char*t, int n); ostream& ostream::write(const unsigned char*t, int n); ostream& ostream::write(const signed char*t, int n);9/10/2024394.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写)【【例例4.14】】将将1~100之间的所有偶数存入二进制文件之间的所有偶数存入二进制文件data2.dat中。
中includevoid main(void){ ofstream out("data2.dat",ios::out|ios::binary); //Line1 if(!out){cout<<"data2.dat\n";return;} for(int i=2;i<100;i+=2) out.write((char*)&i,sizeof(int)); out.close(); cout<<"\n程序执行完毕!程序执行完毕!\n";} 9/10/2024404.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写)【【例例4.15】】 写一个整型数组和一个浮点型数组到二进制文件写一个整型数组和一个浮点型数组到二进制文件data3.dat中,然后从中,然后从data3.dat中读取数据,并显示中读取数据,并显示include#includevoid main(){int i_number[5]={10,20,30,40,50};float f_number[5]={1.53,2.2,3.0,4.0,5.55};int int_arr[5];float float_arr[5];ofstream out("data3.dat");//打开一个文件打开一个文件if(!out){cout<<"can not open data3\n";return;}9/10/2024414.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写) out.write((unsigned char*)&f_number,sizeof(f_number));//把把数组中的浮点数写入文件数组中的浮点数写入文件out.write((unsigned char*)&i_number,sizeof(i_number));//把把数组中的整数数写入文件数组中的整数数写入文件out.close();ifstream in("data3.dat");if(!in){cout<<"can not open data3\n";return;}in.read((unsigned char*)&float_arr,sizeof(float_arr));//从文件从文件把浮点数读入数组中把浮点数读入数组中in.read((unsigned char*)&int_arr,sizeof(int_arr));//从文件把整从文件把整数读入数组中数读入数组中in.close();9/10/2024424.4.5 二进制文件的输入/输出(读写)二进制文件的输入/输出(读写)for(int i=0;i<5;i++)//显示浮点数显示浮点数{cout<
并输出includevoid main(void){ int i,x; ofstream out("data3.dat",ios::out|ios::binary); if(!out){cout<<"不能打开文件不能打开文件d.dat\n";return;} for(i=5;i<200;i+=2) out.write((char*)&i,sizeof(int)); out.close(); 9/10/2024464.4.6 文件的随机访问文件的随机访问ifstream f("data3.dat",ios::in|ios::binary); if(!f){ cout<<"不能打开文件不能打开文件d.dat\n"; return; } f.seekg(30*sizeof(int)); //文件指针移到指定位置文件指针移到指定位置 for(i=0;i<10&&!f.eof( );i++) { f.read((char*)&x,sizeof(int)); cout<
建立输出字符串流对象ostrstream类提供的构造函数的原型类提供的构造函数的原型为:为: ostrstream::ostrstream(char*buffer,int n,int mode=ios::out);n建立输入字符串流对象建立输入字符串流对象 istrstream类提供了两个带参的构造函数,类提供了两个带参的构造函数,istrstream类提供类提供的构造函数的原型为:的构造函数的原型为:istrstream::istrstream(char*buffer); istrstream::istrstream(char*buffer,int n);n建立输入输出字符串流对象建立输入输出字符串流对象strstream类提供的构造函数的类提供的构造函数的原型为:原型为: strstream::strstream(char*buffer,int n,int mode);9/10/2024484.5 字符串流字符串流【【例例4.17】】提取一个字符串中的每一个整数,并把它们依次存入提取一个字符串中的每一个整数,并把它们依次存入到一个字符串流中,最后向屏幕输出这个字符串流。
字符串从到一个字符串流中,最后向屏幕输出这个字符串流字符串从键盘输入字符串流结束符使用的特殊字符键盘输入字符串流结束符使用的特殊字符“$” #includevoid main(){char a[50];char b[50];istrstream sin(a); //定义一个输入字符串流定义一个输入字符串流sin,使用的字,使用的字符数组为符数组为a ostrstream sout(b,sizeof(b));//定义一个输出字符串流定义一个输出字符串流sout,使用,使用b数组数组 9/10/2024494.5 字符串流字符串流 cin.getline(a,sizeof(a));char ch=' ';int x; while(ch!='$') { if(ch>=48 && ch<=57) { sin.putback(ch); Ab108+506,446*55525/ad763,WfR40jjf:kk{63;99}$ 9/10/2024504.5 字符串流字符串流 sin>>x; //从流中读入一个整数,当碰到非数字字从流中读入一个整数,当碰到非数字字 //符时则就认为一个整数结束。
符时则就认为一个整数结束sout<>”运算符例例4.19】】重载提取和插入运算符,直接输入输出对象重载提取和插入运算符,直接输入输出对象。
includeclass CMoney{ public:friend ostream& operator<<(ostream&,CMoney&);friend istream& operator>>(istream&,CMoney&);CMoney(int m=0,int c=0) {Dollar=m;Cents=c;} int Dollar,Cents;};ostream& operator<<(ostream& os,CMoney& m)9/10/2024524.6 重载插入和提取运算符重载插入和提取运算符{ os<<"¥¥"<>(istream& is,CMoney& m){ is>>m.Dollar>>m.Cents; return is;}9/10/2024534.6 重载插入和提取运算符重载插入和提取运算符void main(void){ CMoney m; cout<<"输入两个整数:输入两个整数:"; cin>>m; cout<