版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、11.1 输入流和输出流输入流和输出流C无专门的输入输出语句,是由流库完成;流与特定的设备相联系。iostream.h流类的继承体系流类的继承体系iosostreamistreamclogfstreamiostreamcerrcinofstreamifstreamcoutl流:用于输入输出地一组类l主要内容:文本流、二进制流11.1.1 输出流输出流 cout : 输出流ostream类的一个预定义对象 与标准输出设备(终端屏幕)相联系 ostream中重载了运算符(插入运算符)插入运算符: ostream& operator(类型); /重载形式:注意优先级和结合顺序程序程序输入设备
2、输入设备输出设备输出设备文件文件 cout“string”; cout.operatori; cin.operator(i); 析取运算符:跳过开始空白字符。 char ch; cinch; /输入“ x”,读入x 注意:注意:C C编译器将根据对象编译器将根据对象类型选用相应版本的重载类型选用相应版本的重载)运算符函数,用户不必关心运算符函数,用户不必关心。 读入一个字符串时,空格作为串的终止。 char buffer20; cinbuffer; /输入“Jack Spart”,读入“Jack”类型不符,返回零值,并终止程序。类型不符,返回零值,并终止程序。 int readints( )
3、int v10; for(int i=0; ivi) continue; return i; / 输入:输入:1 2 3 4 5. 6 7 811.1.3 istream_withassign 的对象的对象标准输入设备标准输入设备 ostream_withassign 的对象的对象标准输出设备标准输出设备 ostream_withassign 的对象的对象标准错误输出设备标准错误输出设备 ostream_withassign 的对象的对象标准错误输出设备标准错误输出设备输入流输入流输出流输出流文件流文件流串流串流输入流输入流输出流输出流文件流文件流串流串流输入输入/输出流输出流输入输入/输出文
4、件流输出文件流输入输入/输出串流输出串流屏幕输出流屏幕输出流输入文件流输入文件流输入串流输入串流输出串流输出串流输出文件流输出文件流输入流输入流输出流输出流文件流文件流串流串流输入输入/输出流输出流输入输入/输出文件流输出文件流输入输入/输出串流输出串流屏幕输出流屏幕输出流输入文件流输入文件流输入串流输入串流输出串流输出串流输出文件流输出文件流重载赋值运算符重载赋值运算符“=”得到三个派生类得到三个派生类11.1.4 重载插入和析取运算符(对用户定义类型)重载插入和析取运算符(对用户定义类型) class Complex double rpart, ipart; public: friend
5、ostream&operator(ostream &s, Complex &c); / ;第一个参数是流第一个参数是流第二个参数是要第二个参数是要输入输出的对象输入输出的对象返回流的引用返回流的引用例例1/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的重载版本的重载版本21/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的初始版本的初始版本/ 使用使用 的重载版本的重载版本输出输出 :1 , 2 , 34 , 5 , 67 , 8 , 922class three_d
6、 int x , y , z ; public : three_d ( int a , int b, int c ) x = a ; y = b ; z = c ; friend operator ( , three_d obj ) s obj . x “ , ” ; / 使用使用 的初始版本的初始版本 s obj . y “ , ” ; / 使用使用 的初始版本的初始版本 s obj . z “n” ; / 使用使用 的初始版本的初始版本 ; ;main ( ) three_d a ( 1 , 2 , 3 ) , b ( 4 , 5 , 6 ) , c ( 7 , 8 , 9 ) ; cou
7、t a b c ; / 使用使用 的重载版本的重载版本23class three_d int x , y , z ; public : three_d ( int a , int b, int c ) x = a ; y = b ; z = c ; friend operator ( , three_d obj ) s obj . x “ , ” ; / 使用使用 的初始版本的初始版本 s obj . y “ , ” ; / 使用使用 的初始版本的初始版本 s obj . z “n” ; / 使用使用 的初始版本的初始版本 ; ;main ( ) three_d a ( 1 , 2 , 3 )
8、 , b( 4 , 5 , 6 ) , c ( 7 , 8 , 9 ) ; / 使用使用 的重载版本的重载版本24例例2 #include class Complex double rpart, ipart; public: Complex(double r=0.0, double i=0.0) ipart=i; part=r; friend ostream&operator(ostream &, Complex &); friend ostream&operator(istream& s, Complex &c) s(c.rpart,c.ipa
9、rt); return s; ostream& operator(ostream& s, Complex &c) s(c.rpart,c.ipartc; cout“Complex:”cbuffer;输出流: cout.width(4); cout(12) ; cout.width(4); cout.fill(#); cout(12) ;( 12)( 12)( #12)( #12)Width( )作用于输入作用于输入/ /输出的数字或串输出的数字或串 数据的长度超过width,忽略设置,按数据实际长度显示; cout.width(4); cout(121212) ;每次插
10、入操作后,width被置0; cout.width(4); cout.fill(#); cout(12“),(“ 12) ;(121212)(121212)( #12) , (12)( #12) , (12)11.2.2 11.2.2 格式状态格式状态Ios中用枚举记录标志,控制I/O class ios public: enum skipws=01, /析取操作忽略空白字符析取操作忽略空白字符 left=02, right=04, internal=010, /值按右对齐,符号按左对齐值按右对齐,符号按左对齐 dec=020, oct=040, hex=0100, showbase=0200
11、, showpoint=0400, /float,double显示小数和尾数后的零显示小数和尾数后的零 uppercase=01000, showpos=02000, /在正整数前插入在正整数前插入“+”号号 scientific=04000, /科学计数法,小数点前一位数字科学计数法,小数点前一位数字 / ; / ;可用下列函数设置、读取、取消标志位; long flags( ) /返回当前格式化标志值返回当前格式化标志值 long flags(long f) /设置标志设置标志值值f,并返回上次标志值并返回上次标志值 long setf(long f) /设置标志设置标志位位f,并返回上次
12、标志位并返回上次标志位 long unsetf(long f) /取消在取消在f中设置的标志位,并返回上次标志位中设置的标志位,并返回上次标志位举例: void your_function( ) long old_options=cout.flags(ios:left | ios:oct | ios:showpoint); / cout.flags(old_options); 相抵触的标志不能同时设置,如:ios:dec和ios:oct带伪参数的setf( )指明设置哪类选项,自动清除与新设置矛盾的旧选项。 cout1234 ; cout.setf(ios:oct, ios:basefield
13、); cout1234 ; cout1234 ; cout.setf(ios:hex, ios:basefield); cout1234 ; 原选项基础原选项基础上增加上增加showbase伪参数:基数设置位伪参数:基数设置位作用范围:作用范围:下一标志位设置下一标志位设置 cout.flags(cout.flags( ) | ios:showbase); cout.setf(ios:showbase); 结果结果: 1234 2322 2322 4d2 11.3 控制符控制符函数控制不方便int x=1, y=2cout.width(5);coutx;cout.width(4);couty;
14、宽度控制符宽度控制符 int x=1, y=2;coutsetw(5)xsetw(4)y;控制符如控制符如endl预定义控制符有: hex dec oct指定基数,缺省dec ws用于输入流,略去空白 endl换行 ends插入一个NULL(0)字符,结束一个字符串 flush强制将流从缓冲区写入相应设备 setfill(char f)设置填充字符,缺省委空格 setprecision(int p)设浮点数精度,缺省为6 .控制符成员函数描述decflags(10)置基数为10hexflags(16)置基数为16octflags(8)置基数为8setfill(c)flags(c)设填充字符为c
15、setprecision(n)percision(n)设显示小数精度为n位setw(n)width(n)设域宽为n个字符11.5 文件和流文件和流处理文件的类在fstream.h中定义。文件输入输出:1、创建流对象 2、使用流的成员函数打开文件文件与流建立起联系文件与流建立起联系输出流对象输出流对象my_file与与文件文件hello.dat相联系相联系 #include #lnclude void main( ) ofstream my_file; my_file.open(“hello.dat”, ios:out); / 11.5.1 打开文件打开文件输入打开文件用ifstream类;输出
16、打开文件用ofstream类;输入 输出打开文件用fstream类。打开文件: void open(char* name, int mode, int file_attrb);mode为下列一些方式: ios:app附加方式写到流 ios:ate打开文件,并把文件指针移到文件尾 ios:in为读打开 ios:out为写打开 ios:trunc如文件存在,舍去文件内容 ios:nocreate文件不存在,则失败 ios:noreplace文件存在,则失败file_attrb文件属性: 普通文件、只读文件、隐藏文件。 #include #lnclude void main( ) ofstream
17、my_file; my_file.open(“hello.dat”); my_file“Hello world”endl; my_file.close( ); ofstream my_file(“hello.dat”);11.5.2 按正文方式读文件按正文方式读文件 #lnclude void main( ) char string120, string220; ifstream my_file(“hello.dat”); my_filestring1; my_filestring2; coutstring1 string2endl; my_file.close( ); 11.5.3 按二进制
18、方式读按二进制方式读/ /写文件写文件 读写的数据无含义,不用,而是get( )和put( ) istream & get(char &c); ostream& put(char &c);写数据: #lnclude void main( ) char my_char; static char string =“Hello world”; int i=0; ofstream my_out_file(“hello.dat”); while(stringi) my_out_file.put (stringi+ ); my_out_file.close( ); 读数据:
19、 #lnclude void main( ) char my_char; int i=0; ifstream my_in_file(“hello.dat”); while(my_in_file) my_in_file.get(my_char ); coutmy_char; my_in_file.close( ); 11.5.4 使用使用read( ) 和和write( )函数函数一次读写多个字符,其原型: istream & read(unsigned char* char_buffer, int number_bytes); ostream& write(const unsi
20、gned char* char_buffer , int number_bytes); #lnclude #include void main( ) static char hello_buf =“hellow world.n”; ofstream my_out_file(“hello.dat”); my_out_file.write(hello_buf, sizeof(hello_buff); ifstream my_in_file(“hello.dat”); my_in_file.read(hello_buf, sizeof(hello_buf); my_in_file.close( ); my_out_file.close( ); 11.5.5 使用文件指针使用文件指针 读指针读指针 写指针写指针用istr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CRRA 0104-2020玻璃输液瓶回收规范
- T/TMAC 197-2025电动汽车安全带技术要求
- T/GDAQ 00009-2023血清胰岛素样生长因子-1(IGF-1)参考区间
- T/CI 407-2024钙钛矿电池用激光刻蚀机技术要求
- T/CAAMTB 97.11-2022电动中重卡共享换电车辆及换电站建设技术规范 第11部分:安全防护及应急要求
- T/CQSES 39-2026温室气体 产品碳足迹量化方法与要求 鲜食柠檬
- 2025~2026学年河南周口市鹿邑县西南大学版五年级上册数学学习评价(2)【附答案】
- 2025~2026学年北京市某校人教版五年级上册学业水平数学试卷【附答案】
- 2025-2026学年陕西省咸阳市初中生物七年级期末上册点睛提升高频易错题附答案
- PHP小项目实例实训试题及详细答案
- 2026年广西玉柴机器集团有限公司人员招聘笔试参考试题及详细答案解析
- 2026年学习叉车理论考试题库及答案一套
- 新疆维吾尔自治区初中级档案职称考试(档案基础)手机备考题库及答案(2026年)
- 疼痛诊疗学绪论及基础知识
- 第9课《综合国力日益提升》第一课时(教学课件)统编版《道德与法治》五年级上册 新教材
- 第5课 中国人民站起来了 第1课时 课件(内嵌视频)2026-2027学年道德与法治五年级上册统编版
- 2026年贵州省兴义市检察官、法官入员额考试真题(附答案)
- 第20课 会思考的推理模型(义务教育人工智能课件)
- 水利水电工程基坑临边防护专项方案
- 2026年浙江省绍兴市越城区网格员招录真题(含答案)
- (新版)陆上石油天然气开采主要负责人安全资格考试题库及答案
评论
0/150
提交评论