第9章流类库与输入输出
更新时间:2024-05-08 01:26:01 阅读量: 综合文库 文档下载
第9章 流类库与输入输出
9.1 本章提要
(1) C++语言提供一个用于输入/输出(I/O)操作的类族,这些操作是以对数据敏感
的方式实现的。类族提供了对预定义类型进行输入/输出操作的能力,程序员也可以利用这个类族进行自定义类型的输入/输出操作。 (2) 标准输出操作方法
① 将插入符作用在流对象cout上,可输出显示整型数、浮点数,字符和字符串。 ② 使用成员函数put( )可输出一个字符
③ 使用成员函数write( )可输出一个字符串 (3) 标准输入操作方法
① 将提取符作用在流对象cin上,可输入整型数、浮点数、字符和字符串。
② 使用成员函数get( )可输入一个字符,使用成员函数getline( )可输入—行字符。 ③ 使用成员函数read( )可读取一个字符串。 (4) 格式化输入输出的两种方式 ① 使用标志字和成员函数 ② 使用操作子
(5) 磁盘文件的输入和输出,包括: ① 磁盘文件的打开和关闭操作 ② 文本文件的读写操作 ③ 二进制文件的读写操作 ④ 随机访问数据文件
9.2 程序举例
下面是一个展示用不同方法(使用重载运算符和成员函数)对标准的输入输出流对象(cin和cout)进行操作的例子。
例9-1 用不同方法操作流对象
//ch9_1.cpp 标准设备的输入输出 #include
char buffer1[80],buffer2[80],buffer3[80];
}
cout<<\cin>>buffer1; cout< cin.getline(buffer1,80); //clear buffer cin.getline(buffer2,80); cout< cout.write(buffer3,cin.gcount()); cout<<\ cout<<\ 运行结果: Please enter a sentence: Welcome to C++.↙ Welcome Please enter a sentence: Welcome to C++.↙ Welcome to C++. Please enter a sentence: Welcome to C++.↙ Welcome to 在这个程序中,出现了以下几个对输入输出流进行操作的成员函数。 getline():读取一行字符串 read():读取指定字符个数的字符中 write():输出显示指定字符个数的字符串。 下面是一个使用格式化标志进行格式控制操作的例子。 例9-2 使用格式化标志进行格式控制 //ch9_2.cpp 使用格式化标志进行格式控制 #include \#include //设置整数流的格式和基数 int x=123; cout<<\ <<\<<\ cout< <<\<<\<<\ //设置浮点数流的格式 double a=0.1234567,b=5.5614e8; cout< cout.setf(ios::scientific,ios::floatfield); //设置为科学表示法 cout< cout.unsetf(ios::scientific); //清除科学表示法 cout< cout.setf(ios::fixed,ios::floatfield); //采用定点数形式 cout< cout.unsetf(ios::fixed); //清除定点数形式 //设置大小写控制 cout<<5.67e5<<','< cout.setf(ios::uppercase); //设置为大写 cout<<5.67e5<<','< cout.fill('*'); //采用*为填充字符 cout< cout.setf(ios::left,ios::adjustfield); //设置为左对齐 cout< cout.fill(' '); //采用空格为填充字符 cout< 运行结果: dec: 123 , oct: 173 , hex: 7b dec: 123 , oct: 0173 , hex: 0x7b 0.123457,5.5614e+008 1.234567e-001,5.561400e+008 0.123457,5.5614e+008 0.123457,556140000.000000 567000,0xa7b7a 567000,0XA7B7A ****565134 565134**** 565134 例9-3 使用操作子设置输出宽度和输出精度的例子 //ch9_3.cpp 关于宽度与精度的例子 #include int a=12345; cout< cout< 运行结果如下: 12345 12345 12345 3 3.1 3.14 3.142 3.1416 3.14159 3.141593 下面这个例子展示了对文本文件的处理操作,它从一个已存的文件读出数据,给每一行加上标号后输往新文件和屏幕。 例9-4 给文本文件加行号 //ch9_4.cpp 文本文件的操作 #include void main() { } ifstream in(\if(!in) { } ofstream out(\if(!out) { } char buffer[80]; int lineNumber=1; while(in.getline(buffer,80)) { } out.setf(ios::right,ios::adjustfield); out< cout<<\abort(); cout<<\abort(); 如果已存在文件“abc.txt”,并且其中有三行内容,分别为“Hi”、“Welcome to C++.”和“You will succeed.”,那么在程序运行之后,屏幕上将有如下输出,同时,这些内容还将保存在文件“abc_line.txt” 中。 1.Hi! 2.Welcome to C++. 3.You will succeed. 下面这个例子展示了对二进制文件的操作,它从数组中读取一组数据放到文件中,再从文件中读取一组数据放到另一数组中,并把它显示出来。 例9-5 二进制文件的操作 //ch9_5 二进制文件打开关闭与读写的例子 #include fstream outfile,infile; outfile.open(\ if(!outfile) { cout<<\ abort(); } outfile<<\ outfile<<\ outfile<<\ outfile.close(); infile.open(\ if(!infile) { cout<<\ abort(); } char line[80]; int i=0; while(!infile.eof()) { i++; infile.getline(line,sizeof(line)); cout< } infile.close(); 6. 程序如下 //ch9_ex3_6.cpp #include fstream f(\ for(int i=0;i<20;i++) f.write((char *)&i,sizeof(int)); streampos pos=f.tellp(); for(i=20;i<40;i++) f. write((char *)&i,sizeof(int)); f.seekg(pos); f. read((char *)&i,sizeof(int)); cout<<\ f. seekp(0,ios::beg); for(i= 100;i< 140;i++) f. write((char *)&i,sizeof(int)); f.seekg(pos); f.read((char *)&i,sizeof(int)); cout<<\} 7. 程序如下 //ch9_ex3_7.cpp #include char ch; fstream file; file.open(\ if(!file) { cout<<\ abort(); } file<<\ file.seekg(0,ios::beg); while(!file.eof()) { streampos here=file.tellg(); file.get(ch); if(ch==' ') cout< cout< 四、编程题 1. 编写一个程序,显示九九乘法表。 2. 编程实现任意类型文件的拷贝。 3. 编写一个程序,统计文件abc.txt的字符个数。
正在阅读:
第9章流类库与输入输出05-08
银行反假币考题(1)03-31
2020年上半年服装营业员个人工作总结05-08
2-安全质量标准化方汇报材料10-10
工程建设施工企业质量管理规范08-25
某培训班赴新加坡学习考察报告06-09
加快推进新型城镇化建设反思总结09-07
市场比较法是指将估价对象与估价时点近期有过交易的类似房地产进06-06
实验一 单级放大电路的设计与仿真06-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 输出
- 输入
- 发动机冷却系统散热量确定及水箱、风扇参数确定方法
- 论当前广西地区水泥工业中的清洁生产技术
- 土壤样品采集与处理实验报告
- 《品德与生活(社会 )》教师专业考试试题
- 2015二级建造师考试试题答案
- 经济学基础模拟试卷五附答案
- 人脸识别
- 2018超星漫画艺术欣赏创作期末考试99分
- 枯草芽孢杆菌产碱性蛋白酶液体发酵培养基优化及条件的研究
- 《现代汉语通论》语法 课后作业答案
- 八年级数学上册 第12章 一次函数 12.4 综合与实践 一
- 师德师风学生、家长问卷调查表
- 屋面施工中常见的质量通病及防治措施
- 第二章 继承爱国传统 弘扬民族精神
- 2018年浙江省丽水市中考数学试卷
- 保安部规章制度
- 电力拖动与控制课后答案 李岚 梅丽凤
- 恋恋有词A部分总结
- 关于组织2012年度注册幼儿园年审的通知
- 证券市场基础知识(打印1)