第9章流类库与输入输出

合集下载

C++程序设计语言第九章 流类库与输入输出

C++程序设计语言第九章 流类库与输入输出

输出流
插入运算符(<<)
• 插入(<<)运算符是所有标准C++数据类 型预先设计的。 • 用于传送字节到一个输出流对象。 • 插入运算符举例
输出流
控制输出格式
• 控制输出宽度
–为了调整输出,可以通过在流中放入setw操纵符或 调用width成员函数为每个项指定输出宽度。
• 例11-1 使用width控制输出宽度
输出流
例11-3设置对齐方式
#include <iostream.h> #include <iomanip.h> 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<<setiosflags(ios::left) <<setw(6)<<names[i] 输出结果: 输出结果: <<resetiosflags(ios::left) Zoot 1.23 Jimmy 35.36 <<setw(10)<<values[i] Al 653.7 <<endl; Stan 4358.24 }
输出流
二进制输出文件
• 以通常方式构造一个流,然后使用 setmode成员函数,在文件打开后改变 模式。 • 使用ofstream构造函数中的模式参量指 定二进制输出模式。 • 使用二进制操作符代替setmode成员函 数:ofs << binary;

C++:流类库与输入输出

C++:流类库与输入输出

C++:流类库与输⼊输出7.2.1 C++的输⼊输出流ios:流基类(抽象类)istream:通⽤输⼊流类和其他输⼊流的基类ostream:通⽤输出流类和其他输出类的基类iostream:通⽤输⼊输出流类和其他输⼊输出流类的基类(以下的派⽣类对象有cin、cout、cerr、clog)ifstream:输⼊⽂件流类ofstream:输出⽂件流类fstream:输⼊输出⽂件流istrstream:输⼊字符串流类ostrstream:输出字符串流类strstream:输⼊输出字符串类iostream_withassign: 通⽤输⼊输出流类和其他输⼊输出流类iostream的的派⽣类7.2.2 预定义的流对象C++中包含⼏个预定义的流对象,它们是标准输⼊流对象cin、标准输出流对象cout、⾮缓冲型的标准出错流对象ceer、缓冲型的标准出错流对象clogcin是istream的派⽣类istream_withassign的对象,它与标准输⼊设备(通常是键盘)相联系。

cout是ostream的派⽣类ostream_withassign的对象,它与标准输出设备(通常是显⽰器)相联系。

ceer是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

clog是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。

由于istream和ostream类都在头⽂件iostream中声明的,因此只要在程序中包含头⽂件iostream.h,C++程序开始时这四个标准流对象的构造函数都被⾃动调⽤。

7.2.3 输⼊输出流的成员函数(1)put函数put函数⽤于输出⼀个字符格式:cout.put(char ch)例如:cout.put('A')===cout.put(65)===cout.put(25+40)(2)get函数get函数的功能与提取运算符>>类似,主要不同之处是get函数在读⼊数据时可以包括空⽩字符,⽽后者不可以。

流类库与输入输出

流类库与输入输出

广义文件 (标准设备、磁盘文件)
程序实现
系统实现

C++的流类体系
抽象类、虚析构 I/O格式、错误处理 指针成员
管理流 缓冲区
basic_ios
全局对象cin
basic_streambuf
全局对象cout、 cerr、clog
basic_istream
标准设备I/O
basic_ ostream
重载<<、>>运算符
第9章 流类库与输入输出(3)
1、C++中流的概念及流类体系
2、标准设备的输入输出
3、文件的输入输出
4、文件与对象
1、C++中流的概念及流类体系

流(stream)的概念
数据从一个对象到另一个对象的流动 抽象:实现数据流动的接口(流)
输入输出流类库(封装流对象)
输出 程序 (内存)
输入
流 (对象)
#include<iostream>
提示:自学了解basic_ios提供的格式化输入输出控制及其 一般使用方法
2、标准设备的输入输出

输入输出健壮性的控制*(了解)
basic_ios中定义了流操作状态及针对状态的操作函数,
用以对输入输出状态进行监控。

istream中的部分成员
int istream::get(); //提取一个字符,包括空格等 istream&istream::get(char &); istream&istream::get(unsigned char &);
istream&istream::get(char *,int,char=‟\n‟); istream&istream::get(unsigned char *,int,char=‟\n‟); istream&istream::getline(char *,int,char=‟\n‟); istream&istream::getline(unsigned char *,int,char=‟\n‟);

流类库和输入输出共16页

流类库和输入输出共16页

Harbin Engineering University
第六章
流类库与输入/输出
吴良杰
I/O流的概念
C++的输入输出流是指由若干字节组成的字节序列,这些 字节中的数据按顺序从一个对象传送到另一对象。
流是一种抽象,它负责在数据的生产者和数据的消费者之 间建立联系,并管理数据的流动。
读操作在流数据抽象中被称为(从流中)提取,写操作被 称为(向流中)插入。
#include <iostream.h> #include <fstream.h> void main() {char s[20]; ifstream outf("e:\\a1.txt"); outf>>s; cout<<s; outf.close(); }
哈尔滨工程大学课件
文件流
文件的关闭 文件流对象.close();
哈尔滨工程大学课件
文件流
文件ቤተ መጻሕፍቲ ባይዱ读、写 写文件:文件流对象<<输出内容; 读文件:文件流对象>>变量;
#include <iostream.h> #include <fstream.h> void main() {ofstream outf
outf.open("e:\\a1.txt"); outf<<"abcdefghijk" outf.close(); }
哈尔滨工程大学课件
文件流
打开文件 文件流对象.open(文件名,文件访问方式) 访问方式: ios::out ios::app ios::binary ios::in ... 默认打开方式: ifstream类的文件:ios::in ofstream类的文件:ios::out

第九章java输入输出流

第九章java输入输出流
System.out.println(" 输入一个字符"); c=(char)System.in.read(); System.out.print( "输入的字符是:"+c); } }
OutputStream类
OutputStream类是所有输出数据流的父类,所以它也被实现成 抽象类,定义了所有输出数据流都具有的共同特性.
close( )关闭RandomAccessFile流,并释放资源。 getFilePointer()返回文件指针位置。 length()返回文件长度 read()从文件中读取一个字节的数据 readInt()从文件中读取一个int值(4个字节) readLine()读取一行 seek(long pos)定位参数pos在文件中指定的位置
OutputStream类的method
public void close( ) throws IOException 关闭与输出数据流的连系 public void flush( )throws IOException 将写入的数据确实送到接受数据的装置去.因为写入的数据通 常会先放到高速缓存(cache)里面,等到数量达到某一程度 时,用这个方法将强迫数据写进去. public void write(byte[ ] b)throws IOException 将数组b中的数据写入输出数据流
Writer类的method
public abstract void close()throws IOException 关闭与输出数据流的连接,但关闭之前会先调用一次flush
method.如果程序结束前没有调用这个method.则写入的数据 可能会流失调. public abstract void flush()throws IOEception 将写入的数据确实送到收据的装置去. public void write(char[] cbuf) 将cbuf数组中的字符一一 写入输出数据流

流类库与输入输出

流类库与输入输出

流类库与输入/输出。

本章主要内容:a)I/O流的概念b)预定义的标准流与提取和插入运算符c)使用I/O成员函数输入流d)文件流2.概述a)输入/输出( input/output ) 是指程序与计算机的外部设备之间进行信息交换。

b)输入操作指从指定设备收取一个字符序列。

c)输出操作将一个对象转换为一个字符序列,输出到某一个设备;d)输入输出操作可以看成是字符序列在源和目的之间的流动。

将执行这个输入/输出操作的类体系称为流类,提供这个流类实现的系统称为流类库。

e)在C++中,没有专门的输入/输出语句,为了方便用户灵活地完成输入/输出,C+提供了功能强大的输入/输出流类库。

f)C++的I/O系统为了向程序员提供一个统一的接口,使程序的设计尽可能地与所访问的具体设备无关,在程序员与被使用的设备之间提供了一个抽象的概念——流。

g)读操作在流数据抽象中被称为(从流中)提取>>,h)写操作被称为(向流中)插入<<。

i)C++语言支持的外部设备是各种各样的,它将各设备都转换成一个称为流的逻辑设备,由流来完成对不同设备的具体操作。

对程序员而言,所有流的行为是一样的,所以一个用来进行磁盘文件写入操作的函数,也可以用来向显示器写信息。

3.使用流的优点:(与printf,scanf比较)a)(1)可以用其严格的类型检查机制减少因使用不当引起的程序错误;b)(2)流是面向对象的,可以利用类的继承性和多态性,给用户提供统一的接口,实现更多的功能。

4.C++中的流类体系在头文件“iostream.h”中作了说明。

a)*类ios是类istream和类ostream的虚基类;b)*streambuf不是ios类的派生类,类ios中有一个指c)针成员指向类streambuf的一个对象。

d)*类streambuf是用来管理一个流的缓冲区。

e)*类iostream是类istream和类ostream的公有派生,f)从而通过#include “iostream.h”可以完成输入操作和输出操作。

C++程序设计语言揣锦华第9章流类库与输入输出

C++程序设计语言揣锦华第9章流类库与输入输出

float fNumber;
inS>>iNumber>>fNumber; 和浮点数
//从串流中读入一个整数

char*Buf1=new char[28];
ostrstream outS(Buf1,28);
outS<<"iNumber="<<iNumber
<<",fNumber="<<fNumber<<endl;
第9章 流类库与输入/输出
打开一个输出文件,用于在文件尾添加数据 打开一个现存文件(用于输入或输出)并查找到结尾 打开一个输入文件。对于一个ofstream文件,使用 ios::in作为一个openmode,可避免删除一个现存文件中 现有的内容 打开一个文件,用于输出。对于所有ofstream对象, 此模式是隐含指定的 如果一个文件存在,则打开它;否则该操作失败
第9章 流类库与输入/输出
9.4 控制符
9.4.1 使用流对象的成员函数 【例9-3】 使用width成员函数控制输出宽度。
#include <iostream.h> void main( ) { double values[ ]={1.44,36.47,625.7,4096.24}; for(int i=0;i<4;i++) {
return Buf1;
第9章 流类库与输入/输出
} 程序运行结果为
iNumber=100,fNumber=123.456 分析:在函数ioString( )中,以pString为输入设备, 先定义一个输入串流对象inS,从中输入一个整数和一 个浮点数。再开辟一个字符串空间作为输出设备,定 义一个输出串流对象outS,将从输入设备输入的两个 变量的值输出。

第9章 C++流

第9章 C++流

【复习与提示】
1. C++为实现数据的输入和输出定义了一个庞大的类库,它包括的类主要有ios,istream, ostream,iostream,ifstream,ofstream,fstream,使用到相应的流时,应加载相应的包含文 件: #include<iostream>; using namesapce std; 2. 将运算符“<<”称为插入运算符,“>>”称为抽取符。 3. 计算机处理的所有数据项最终都是0和1的组合,字符是由位构成的,域(field)是由字符构成 的。一个域就是一组有意义的字符。记录是由多个域构成(在C++中称为成员)。 4. C++语言把每一个文件都看成一个有序的字节流,每一个文件或者以文件结束符(end-of-file marker)结束,或者在特定的字节号处结束。 5. 文件可以用open( )函数打开,用close( )函数关闭,可以用同一个对象来处理单个程序中不 同的文件。 6. 每个流有一系列位或标记与它的操作相关。这些位在ios类中定义。与打开文件有关的位称 为打开方式位(open mode bits)。 7. C++提供了随机读写文件的函数seekg( )、tellg( )、seekp( )、tellp( ): (1)get指针:它指出将出现下一个读操作的文件的位置。 (2)put指针:它指出将出现下一个写操作的文件的位置。
流的层次结构
ios
istream
ostream
iostream
ifstream
fstream
ofstream
C++为用户进行标准I/O操作定义 了四个类对象
标识符名字 cin cout cerr clog 调用设备 键盘 屏幕 屏幕 打印机 默认的含义 标准输入 标准输出 标准错误 打印机

面向对象与C++ 流类库与输入输出共38页

面向对象与C++ 流类库与输入输出共38页
1、不要轻言放弃ቤተ መጻሕፍቲ ባይዱ否则对不起自己。
2、要冒一次险!整个生命就是一场冒险。走得最远的人,常是愿意 去做,并愿意去冒险的人。“稳妥”之船,从未能从岸边走远。-戴尔.卡耐基。
梦 境
3、人生就像一杯没有加糖的咖啡,喝起来是苦涩的,回味起来却有 久久不会退去的余香。
面向对象与C++ 流类库与输入输出 4、守业的最好办法就是不断的发展。 5、当爱不能完美,我宁愿选择无悔,不管来生多么美丽,我不愿失 去今生对你的记忆,我不求天长地久的美景,我只要生生世世的轮 回里有你。
谢谢!
51、 天 下 之 事 常成 于困约 ,而败 于奢靡 。——陆 游 52、 生 命 不 等 于是呼 吸,生 命是活 动。——卢 梭
53、 伟 大 的 事 业,需 要决心 ,能力 ,组织 和责任 感。 ——易 卜 生 54、 唯 书 籍 不 朽。——乔 特
55、 为 中 华 之 崛起而 读书。 ——周 恩来

第九章_流类库和输入输出(C++程序设计(第2版)吴乃陵)

第九章_流类库和输入输出(C++程序设计(第2版)吴乃陵)
流类库和输入/ 第九章 流类库和输入/输出
文件是存储在磁盘、磁带等外部设备上数据集合, 文件是存储在磁盘、 磁带等外部设备上数据集合, 每 一个文件都必须有一个唯一名字。 一个文件都必须有一个唯一名字。使用文件前必须首先 打开文件,使用后必须关闭文件。 打开文件, 使用后必须关闭文件。对文件的操作时通过 文件流类完成的。文件流类在流与文件之间建立连接, 文件流类完成的。文件流类在流与文件之间建立连接, 使用这些文件流类必须用#include 编译指令将fstream.h 使用这些文件流类必须用 编译指令将 包含进来。 包含进来。 数据从一个对象到另一个对象的传送被抽象为 数据的输入/输出就是通过输入 输出就是通过输入/输出流来实现 “流”。数据的输入 输出就是通过输入 输出流来实现 的。 流是一种抽象的概念, 流是一种抽象的概念,负责在数据的产生者和数据 的使用者之间建立联系,并管理数据的流动。 的使用者之间建立联系,并管理数据的流动。
4.关闭文件。三个文件流类各有一个关闭 关闭文件。 文件的成员函数 : void ifstream::close(); void ofstream::close(); void fstream::close(); 使用很方便, 使用很方便,如: iofile.close();
关闭文件时, 关闭文件时,系统把该文件相关联的文件缓冲 区中的数据写到文件中,保证文件的完整, 区中的数据写到文件中,保证文件的完整,收回与 该文件相关的内存空间,可供再分配, 该文件相关的内存空间,可供再分配,把磁盘文件 名与文件流对象之间的关联断开, 名与文件流对象之间的关联断开,可防止误操作修 改了磁盘文件。如又要对文件操作必须重新打开。 改了磁盘文件。如又要对文件操作必须重新打开。 关闭文件并没有取消文件流对象, 关闭文件并没有取消文件流对象,该文件流对 象又可与其他磁盘文件建立联系。 象又可与其他磁盘文件建立联系。文件流对象在程 序结束时,或它的生命期结束时,由析构函数撤消。 序结束时,或它的生命期结束时,由析构函数撤消。 它同时释放内部分配的预留缓冲区。 它同时释放内部分配的预留缓冲区。

第9章:输入和输出流

第9章:输入和输出流

9.1.2 流对象
1. 建立流对象
创建输入输出流对象的常用构造方法用2种,如:
FileInputStream (String name), 直接指定的文件名创建输入流 FileInputStream (File filename), 用文件对象创建输入流。
创建FileOutputStream类、FileReader类和FileWriter类的 流对象与FileInputStream完全类似。
(1) File (String s),由 s 确定 File 对象的文件名。
(2) File (String directory , String s) s确定文件名。
9.1.2 流对象
Java 程序的输入和输出流称为流对象, 输入输出流由文件名 或 File 对象创建。

使用以上三个方法时,如果在读数据之前,已到达输入的末端位置,没有 读入一个字节数据,用返回-1 表示流在读之前已结束。
9.1.2 流对象
2. 输入流的常用方法
FileReader类包含下面用于读字符和字符数组的方法:
(1)int read(), 从输入流读取下一个字符。 返回的整数即该字符的 Unicode值。如果读前已到流的末尾,则返回-1。 (2)int read (char b[]), 从输入流读取长度为 b.length 的字符数据,写入 到字符数组 b,并返回实际所读取的字符数。 (3)int read (char b[], int off, int len),从数据流中读取长度为 len 的字 符数据,写入到字符数组 b 中从下标 off 开始的数组元素中,并返回实际读 取的字符数。
BufferedWriter 类是提供缓冲式输出的类。

流类库与输入输出

流类库与输入输出

if ( ! infile )
{ cerr<<″open error!″<<endl; exit(1); } for(i=0;i<10;i++) { //从磁盘文件读入10个整数,顺序存放在a数组中 cout<<a[i]<<″ ″; }
28
infile>>a[i];
//在显示器上顺序显示10个数
cout<<endl; max=a[0]; order=0; for(i=1;i<10;i++) if(a[i]>max) //将当前最大值放在max中, 序号放在order中 { max=a[i]; order=i; } cout<<"max="<<max<<endl cout<<"order="<<order<<endl;
Complex Complex∷operator + (Complex &c2) {return Complex(real+c2.real,imag+c2.imag); } ostream& operator << (ostream& output, Complex& c) { output<<“(“<<c.real<<“+”<<c.imag<<“i)” <<endl; return output; } istream& operator >> (istream& input, Complex& c) { cout<<“input real and imaginary :”; input>>c.real>>c.imag; return input; }

输入与输出流库优选PPT文档

输入与输出流库优选PPT文档

在进行输s入tr操s作tr时e,a可m把输:输入数入据看输成是出逐个串字节流地从类外设。流入到计算机内存;
在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存;
ofssttrreeaamms::输普td入通输i输o出出s文流t件r类e流和a类用。m于其:他用输出于流类标的基准类。输入输出文件的输入输出类。
Hale Waihona Puke 11.4输入与输出流库• rlo库中的类
(4)输入输出流类。
(6)预定i义o流s初tr始e化a类m:普通输入输出流类和用于其他输入输出流的基类。 fstream:输入输出文件流类。 iostream:普通输入输出流类和用于其他输入输出流的基类。
ostream:普通输出流类和用于其他输出流类的基类。 iostream:普通输入输出流类和用于其他输入输出流的基类。
程序员教程
C/C++程序设计
输入与输出流库
11.4输入与输出流库
• 与C语言一样,C++语言也没有设置内部的输入输出功能 ,其目的是为了最大限度地保证语言与平台的无关性。在 进行输入操作时,可把输入数据看成是逐个字节地从外设 流入到计算机内存;在进行输出操作时,则把输出的数掘 看成是逐个字节地从内存流到外设。
• C++使用iostream流库进行输入输出操作。
11.4输入与输出流库
• rlo库中的类 (1)抽象流基类。 ios:流基类。 (2)输入流类 istream:普通输入流类和用于其他输入流的基类。 ifstream:输入文件流类。 istream withassign:用于cin的输入流类。 istrstream:输入串流类。
(6)预定义流初始化类 ofstream:输出文件流类。 在进行输入操作时,可把输入数据看成是逐个字节地从外设流入到计算机内存; streambuf:抽象缓冲流基类。 stdiostream:用于标准输入输出文件的输入输出类。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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 <iostream.h>void main(){char buffer1[80],buffer2[80],buffer3[80];cout<<"Please enter a sentence:"<<endl;cin>>buffer1;cout<<buffer1<<endl;cin.getline(buffer1,80); //clear buffercout<<"Please enter a sentence:"<<endl;cin.getline(buffer2,80);cout<<buffer2<<endl;cout<<"Please enter a sentence:"<<endl;cin.read(buffer3,10);cout.write(buffer3,cin.gcount());}运行结果:Please enter a sentence:Welcome to C++.↙WelcomePlease 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 "iostream.h"#include <iomanip.h>void main(){//设置整数流的格式和基数int x=123;cout<<"dec: "<<dec<<x<<" , "<<"oct: "<<oct<<x<<" , "<<"hex: "<<hex<<x<<endl;cout<<setiosflags(ios::showbase) //设置为显示基数符号<<"dec: "<<dec<<x<<" , "<<"oct: "<<oct<<x<<" , "<<"hex: "<<hex<<x<<endl;//设置浮点数流的格式double a=0.1234567,b=5.5614e8;cout<<a<<','<<b<<endl;cout.setf(ios::scientific,ios::floatfield); //设置为科学表示法cout<<a<<','<<b<<endl;cout.unsetf(ios::scientific); //清除科学表示法cout<<a<<','<<b<<endl;cout.setf(ios::fixed,ios::floatfield); //采用定点数形式cout<<a<<','<<b<<endl;cout.unsetf(ios::fixed); //清除定点数形式//设置大小写控制cout<<5.67e5<<','<<hex<<686970<<endl;cout.setf(ios::uppercase); //设置为大写cout<<5.67e5<<','<<hex<<686970<<endl;//设置对齐方式和填充字符int y=565134;cout.fill('*'); //采用*为填充字符cout<<dec<<setw(10)<<y<<endl;cout.setf(ios::left,ios::adjustfield); //设置为左对齐cout<<setw(10)<<y<<endl; //设置输出宽度为10 cout.setf(ios::right,ios::adjustfield); //设置为右对齐cout.fill(' '); //采用空格为填充字符cout<<setw(10)<<y<<endl;}运行结果:dec: 123 , oct: 173 , hex: 7bdec: 123 , oct: 0173 , hex: 0x7b0.123457,5.5614e+0081.234567e-001,5.561400e+0080.123457,5.5614e+0080.123457,556140000.000000567000,0xa7b7a567000,0XA7B7A****565134565134****565134例9-3 使用操作子设置输出宽度和输出精度的例子//ch9_3.cpp 关于宽度与精度的例子#include <iostream.h>#include <iomanip.h>void main(){int a=12345;cout<<setw(10)<<a<<endl; //输出宽度为10cout.width(8); //输出宽度为8cout<<a<<endl;cout<<a<<endl;const double PI=3.1415926;for(int i=1;i<8;i++){cout<<setprecision(i)<<PI<<endl; //设置不同的输出精度}}运行结果如下:12345123451234533.13.143.1423.14163.141593.141593下面这个例子展示了对文本文件的处理操作,它从一个已存的文件读出数据,给每一行加上标号后输往新文件和屏幕。

例9-4 给文本文件加行号//ch9_4.cpp 文本文件的操作#include <iostream.h>#include <fstream.h>#include <iomanip.h>#include <stdlib.h>void main(){ifstream in("abc.txt");if(!in){cout<<"Can't open the file abc.txt!"<<endl;abort();}ofstream out("abc_line.txt");if(!out){cout<<"Can't open the file abc_line.txt!"<<endl;abort();}char buffer[80];int lineNumber=1;while(in.getline(buffer,80)){out.setf(ios::right,ios::adjustfield);out<<setw(1)<<lineNumber<<'.'<<buffer<<endl; //输往文件cout<<setw(1)<<lineNumber<<'.'<<buffer<<endl; //输往屏幕lineNumber++;}}如果已存在文件“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 <iostream.h>#include <fstream.h>#include <stdlib.h>#include <math.h>const double PI=3.14159;void main(){double sout[7],sdat[7];int i,angle;ofstream out("sin.dat");if(!out){cout<<"Can't open the file!"<<endl;abort();}for(i=0,angle=0;i<7;i++){sdat[i]=sin(double(angle)*PI/180);angle+=15;}out.write((unsigned char*)sdat,sizeof(sdat));out.close();ifstream in("sin.dat");if(!in){cout<<"Can't open the file!"<<endl;abort();}in.read((unsigned char*)sout,sizeof(sout));for(i=0,angle=0;i<7;i++){cout<<"sin";cout.setf(ios::right,ios::adjustfield);cout<<angle<<"°="<<sout[i]<<endl;angle+=15;}in.close();}程序的输出结果。

相关文档
最新文档