流类库与输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、字符串流
将一组数据保存在字符数组中
using namespace std; struct student {int num; char name[20]; float score; } int main( ) {student stud[3]={1001,″Li″,78,1002,″Wang″,89.5,1004,″Fun″,90}; char c[50]; //用户定义的字符数组 ostrstream strout(c,50); //建立输出字符串流,与数组c建立关联,缓冲区长 30 for(int i=0;i<3;i++) //向字符数组c写3个学生的数据
三、文件输入输出
1.打开磁盘文件
方式一 ofstream outfile; outfile.open(″f1.dat″,ios::out); 方式 ios:out ios:in ios:app ios:ate ios:trunc ios:binary ios:nocreate ios:::in|ios::binary ios:in|ios:out 方式二 ofstream outfile(“f.dat”,”ios:out”); 作用 以输出方式打开文件 以输入方式打开文件 以输出方式打开文件,写的数据添加到末尾 打开一个已有文件,直接定位到末尾 打开一个文件,如果已经存在删除数据 已二进制形式打开一个文件 打开一个文件,如果不存在打开失败 以二进制输入方式打开二进制文件 以输入输出方式打开一个文件
c.将文件流与新文件重新关联: ifstream infile(“in”); infile.close(); infile.open(“next”);
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
三、文件输入输出
1. 对ASCII文件的操作 #include <fstream> using namespace std; int main( ) {int a[10]; ofstream outfile(″f1.dat″,ios::out); if(!outfile) {cerr<<″open error!″<<endl; exit(1); } cout<<″enter 10 integer numbers:″ <<endl; for(int i=0;i<10;i++) {cin>>a[i]; outfile<<a[i]<<″ ″;} outfile.close(); return 0; } #include <fstream> int main( ) {int a[10]; ifstream infile(″f1.dat″,ios::in|ios::noc reate); if(!infile) {cerr<<″open error!″<<endl; exit(1); } for(i=0;i<10;i++) {infile>>a[i cout<<a[i]<<″ “;} infile.close(); return 0; }
三、文件输入输出
文件流与文件流类
ifstream;由istream派生而来,用于支持磁盘文件的输入
文件流类
ofstream;由oftream派生而来,用于支持面向文件的输出 fstream;由iostream派生而来,用于支持面向文件的输入输出
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
格式控制) 二、标准输入输出(格式控制 标准输入输出 格式控制
3.使用流对象的成员函数控制格式输出 #include <iostream>
using namespace std; 除了可以用控制符来控制输出格式外,还可以通过调用流对象cout中用 int main( ) {int a=21 于控制输出格式的成员函数来控制输出格式。 cout.setf(ios::showbase);//显示基数符号(0x或0) cout<<″dec:″<<a<<endl; //默认以十进制形式输出a 流成员函数 作用相同的控制符 作用 cout.unsetf(ios::dec); //终止十进制的格式设置 cout.setf(ios::hex); //设置以十六进制输出的状态 precision(n) setprecision(n) 设置实数的精度为n位 cout<<″hex:″<<a<<endl; //以十六进制形式输出a width(n) setw(n) 设置字段宽度 cout.unsetf(ios::hex); //终止十六进制的格式设置 fill(c) 设置填充字符c cout.setf(ios::oct); setfill(c) //设置以八进制输出的状态 cout<<″oct:″<<a<<endl; //以八进制形式输出a setf() setiosflags() 设置输出格式状态 cout.unseft(ios::oct); unsetf() resetioflags() 终止已设置的格式状态 char *pt=″China″; //pt指向字符串″China″ cout.width(10); //指定域宽为10 cout<<pt<<endl; //输出字符串 cout.width(10); //指定域宽为10 return 0; }
流类库与输入输出操作
一、流的概念及流类库结构
流:是一种抽象,负责在数据的生产者和数据的消费者之间建立联系, 并管理数据的流动
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
一、流的概念及流类库结构
cin
str
cin、cerr、clog
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
二、标准输入输出流
标准输入输出流
cin:标准输入 istream类的对 象用来处理标准 输入,即键盘输 入。
cout:标准输出 ostream类的对 象,用来处理标 准输出,即屏幕 输出。
cerr:标准输出 ostream类的对 象,用来处理标 准出错信息,不 带缓冲区,发给 它内容立即输出
clog:标准输出 ostream类的对 象,用来处理标 出错信息,带缓 区,缓冲区满时 被输出
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
三、文件输入输出
ASCII文件与二进制文件
ASCII文件提供了高级的输入输出功能,把若干个字节转换为一个有意 义的单位,然后以ASCII字符形式输入输出 二进制文件提供低级的输入输出功能,这种输入输出不经过转化,因此 效率较高,传输速度快,效率高
东南大学软件学院(苏州 东Leabharlann Baidu大学软件学院 苏州 ) C++程序设计 程序设计
格式控制) 二、标准输入输出(格式控制 标准输入输出 格式控制
#include <iostream> 1.使用控制符控制格式 #include <iomanip>//不要忘记包含此头文件 using namespace std; int main()控制符 作用 {int a; dec 以十进制输出 cout<<″input a:″; 以十六进制输出 cin>>a; hex cout<<″dec:″<<dec<<a<<endl; //以十进制形式输出整数 oct 以八进制输出 cout<<″hex:″<<hex<<a<<endl; //以十六进制形式输出整数a setbase(n) 以n进制形式输出(n的取值,8,10,16) cout<<″oct:″<<setbase(8)<<a<<endl; //以八进制形式输出整数a setfill(c) 设置填充符c, c可以是常量或变量 char *pt=″China″; //pt指向字符串″China″ cout<<setw(10)<<pt<<endl; //指定域宽为10,输出字符串 setw(n) 设置字段宽度为n位 cout<<setfill(′*′)<<setw(10)<<pt<<endl; //指定域宽10,输出字符 setiosflags(ios:left) 输出数据左对齐 double pi=22.0/7.0; //计算pi值 setiosflags(ios:fixed) 设置浮点以固定的小数位数显示 cout<<setiosflags(ios::scientific)<<setprecision(8);//按指数形式输出, cout<<″pi=″<<pi<<endl; //输出pi值 setiosflags(ios:showpos) 输出时正数给出”+” cout<<″pi=″<<setprecision(4)<<pi<<endl; //改为4位小数 cout<<″pi=″<<setiosflags(ios::fixed)<<pi<<endl;//改为小数形式输出 注意:这些控制符号都在iomanip头文件中,使用时应在程序中包含相关 return 0; 头文件 }
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
二、标准输入输出流
有一元二次方程ax2+bx+c=0,其一般解为x1,2=(-b±b2-4ac)/2a,但若 a=0,或b2-4ac<0时,用此公式出错。
#include <iostream> #include <cmath> using namespace std; int main( ) {float a,b,c,disc; cout<<″please input a,b,c:″; cin>>a>>b>>c; if (a==0)cerr<<″a is equal to zero,error!″<<endl; else if ((disc=b*b-4*a*c)<0) cerr<<″disc=b*b-4*a*c<0″<<endl; else { cout<<″x1=″<<(-b+sqrt(disc))/(2*a)<<endl; cout<<″x2=″<<(-b-sqrt(disc))/(2*a)<<endl;} return 0; }
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
三、文件输入输出
2.文件有效性检查及关闭
a.有效性检查: if(!infile){ cerr<<“error:unable to open input file”; exit(1) } b.关闭文件: infile.close();
1.建立输出字符串流对象 ostream::ostream(char *buf,int n,int mode=ios:out) 2.建立输入字符串对象 istream::istream(char *buf,int n) istream::istream(char *buf)
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
流类库与输入输出操作
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
四、字符串流
istrstream;由istream派生而来,从内存空间读取数据
字符串流类
ostrstream;由oftream派生而来,将数据流向内存空间 strstream;由oftream派生而来,向内存空间读写数据
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
三、文件输入输出
2. 对二进制文件进行读写 2.1 利用成员函数read和write读写二进制文件 istream .read(char *buf,int len) ostream .write(char *buf,int len) 2.2 与文件指针有关的流成员函数 成员函数 gcount() tellg() seekg(文件中位置) tellp( ) seekp(文件中的位置) 作用 返回最后一个输入所读入的字节数 返回输入文件指针当前的位置 将文件指针移到指定的位置 返回输出文件指针当前的位置 将输出文件指针移动到指定的位置
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计
三、文件输入输出
现有一批学生数据存储于(stuInfo.txt),数据成员包括(学号、姓名 性别),要求输入一条学生信息,写入文件后,显示其他所有学生的信息
东南大学软件学院(苏州 东南大学软件学院 苏州 ) C++程序设计 程序设计