C程序设计(第二版)第九章流类库与输入输出

合集下载

C程序设计教程与实训(第二版)第9章 文件

C程序设计教程与实训(第二版)第9章 文件
程序代码如下: #include<stdio.h> #include<stdlib.h> void main() { char c; FILE *fp1,*fp2; if((fp1=fopen("f_src.txt","r"))==NULL) /*以只读方式打开f_src.txt文件*/ { printf("cannot open the file.\n"); exit(0); /*终止程序*/ }
9.2 文件的打开和关闭
文件操作一般遵循以下步骤:
创建/打开文件。 从文件中读取数据或向文件中写入数据。 关闭文件。
9.2 文件的打开和关闭
9.2.1 文件打开函数fopen
fopen()的一般调用形式为:
FILE *fp fp=fopen(文件名,文件操作方式); 功能:按照指定的方式打开/创建指定的文件。 返回值: 打开/创建文件成功时返回与文件相对应的结构体 类型的指针,否则返回空(NULL)。
9.3 文件的读写
9.3.3 文件的格式化输入输出函数 文件的格式化输出函数fprintf( ) fprintf()函数调用的一般形式为: fprintf(文件指针,格式字符串,输入列表); 功能:将给定的数据按照指定格式写入文件。
例如:fprintf(fp, "%d%.2f%c",i,f,ch); 其中fp指向一个已经打开的文件,将变量i,f和ch的值按照整 型格式,浮点型格式(保留2位小数)和字符型格式输出到fp指 向的文件。
9.3 文件的读写
9.3.4 文件的数据块输入输出函数 文件的数据块输出函数fwrite( )
其调用的一般形式为: fwrite (buffer,size,count,fp); buffer:指针变量,表示要写入文件的数据块在内存中的起始 地址; size:一个数据项的字节长度; count:要写入的数据项个数; fp指向一个已经打开的文件。 返回值: 函数执行正确时,为写入文件的数据项数; 函数执行出现错误时返回值小于指定读取的数据项数。

C++程序设计(第二版)第9章流类库与输入输出

C++程序设计(第二版)第9章流类库与输入输出
最多提取nCount-1个字符给buf, 遇结束符delim或到达文件结束, 则停止提取。存入buf中的字符 串以0结尾,delim不存入buf。
9.3.3-1 标准输入流成员函数
函数原型 istream& getline(char* buf,int nCount,char delim=’\n’)
9.2.2 标准流对象
四个流对象均是文 本流对象,主要工 作是完成程序中的 数据与外部设备的 传输及数据格式的 转换。
键盘 istream cin
显示器 ostream cout
程序
9.3 标准设备的输入/输出
9.3.1 输入流 9.3.2 输出流 9.3.3 标准输入/输出函数成员 9.3.4数据流的错误检测
9.1 流的概念
C++语言本身并不包含输入输出功能,但C++标准库提 供了一系列输入输出流类,通过流类完成数据的输入输出。
在C++中,将数据从一个对象到另一个对象的传输抽象为 “流”。从流中获取数据的操作称为提取操作,向流中添 加数据的操作称为插入操作,数据的输入与输出就是通过 I/O流来实现的。
9.3.1 输入流
istream 类提供了格式化和非格式的输入功能。常用的 输入方法是在标准输入流对象cin上使用提取运算符”>>”。 从与键盘相连的标准输入流cin中提取数据并赋值给相应的 对象,提取运算符返回cin流对象的引用,因此提取运算符 可以连用。
cin>>变量名1>>变量名2…>>变量名n; 数据的提取是从输入回车开始的,提取运算符忽略了流 中的空格、制表符、Enter键等空白字符。
9.3.1 输入流

流类库与输入输出-精品.ppt

流类库与输入输出-精品.ppt

//指定域宽为10
cout<<pt<<endl;
//输出字符串
cout.width(10);
//指定域宽为10
return 0;
}
东南大学软件学院(苏州 ) C++程序设计
三、文件输入输出
ASCII文件与二进制文件
ASCII文件提供了高级的输入输出功能,把若干个字节转换为一个有意 义的单位,然后以ASCII字符形式输入输出
int main()控制符
作用
{int a; dec cout<<″input a:″; cin>>a; hex
以十进制输出 以十六进制输出
cout<<″deoc:c″t<<dec<<a<<endl;
//以十进以制八形进式制输出整数
ccoouutt<<<<s″″eohtcebtxa::″s″<<e<<(shnee)tbx<as<ea(<8<)<e<ndal<; <e以nnd进l; 制/形/以//式以十输八六出进进(制制n形形的式式取输输值出出,整整8数,数1a0a,16)
cout<<″x2=″<<(-b-sqrt(disc))/(2*a)<<endl;} return 0; }
东南大学软件学院(苏州 ) C++程序设计
二、标准输入输出(格式控制)
1.##使iinn用cclluu控ddee制<<ii符oosm控traen制aipm格>>//式不要忘记包含此头文件
using namespace std;

C语言程序设计教程(第2版)课件第9章

C语言程序设计教程(第2版)课件第9章

⑵指针与指针的加运算毫无意义,所以指针与指针 没有加运算。 ⑶指针与指针的减运算要求相减的两个指针属于同 一类型,其结果是整数,表示两个指针之间的数 据的个数。其结果值的计算公式是:
ptr1-ptr2=(ptr1的值- ptr2的值) /指针的数据类型所占的字节数 例如:
int *ptr1,*ptr2,*ptr3,x; int ary[5]={2,4,8,16,32}; ptr1 = &ary[0] ; ptr2 = &ary[3]; ptr3 = ary; x=ptr2-ptr1;
9.3 指针与数组
9.3.1 一维数组的指针
数组的指针 :是数组的起始地址。
数组元素的指针 :是数组元素的地址。 当指针变量指向数组或数组元素时,它就是指 向数组的指针变量。
C规定: ⑴数组名代表数组的首地址(起始地址),
也就是第一个元素的地址。
⑵当指针变量p指向数组时,p+1指向数组 的下一个元素。假设一个整型元素占两 个字节,p+1是使p的地址加2个字节。 如:int a[10],*p ; p+i、a+i 、&a[i] 则:p=a ; 与 p=&a[0];等价 都是a[i]的地址。 称指针变量p指向数组元素a[0]
第9章 指 针
本章要点
指针的定义、引用和运算方法
数组、函数和字符串与指针的关系
本章难点
指针变量的引用
指针作为函数参数的运用
预备知识
1. 内存的概念 内存:就是内部存储器,是由存储单元组成 的。它的特点是存储单元是线性连续
的。存储单元的最小单位是字节。
2. 地址的概念
地址:为了访问内存中的某个存储单元,我们 要为它编号,这种编号称为内存地址。 通过地址我们就能够访问该地址所标 识的存储单元。

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++语言程序设计第9章 流类库与输入输出

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

• 【例9.1】 cout 、cerr区别。
#include <iostream> #include<stdlib.h> using namespace std; int main() { cout<<"hello "<<endl; cerr<<"hello world"<<endl; system("pause"); }
• 将例9-1编译形成项目可执行文件9_1.exe,在命令提示符状态 分别输入两个命令: • “9_1 >t1.txt”和“9_1 2>t2.txt”,分别查看t1.txt和t2.txt可 以看出不同。
9.2.1 插入运算符(<<)和操纵符
• 插入(<<)运算符是所有标准C++数据类型预先设计的,用 于传送字节到一个输出流对象。 • 很多情况下,程序员需要控制输入输出格式。C++提供了 两种格式控制方法:一种方法是使用ios类中有关格式控 制的成员函数;另一种是使用预先定义的操纵符一起工作 。下面重点讲述操纵符。 • C++预定义的操纵符分为带参数的操纵符和不带参数的操 纵符。通常,不带参数的操纵符在iostream文件中,而带 参数的操纵符在iomanip文件中定义。在进行输入输出时 ,操纵符被嵌入到输入或输出链中,用来控制输入输出的 格式。程序中如果使用带参数的操纵符,还必须使用预编 译命令: • #include <iomanip>
• 程序运行时,在内存中为每一个数据流开 辟一个内存缓冲区,用来存放流中的数据 。例如当用cout和插入运算符“<<”向显 示器输出数据时,先将数据送入内存输出 缓冲区保存,直到缓冲区满了或遇到endl, 就将缓冲区中的全部数据送到显示器显示 ;当用cin和提取运算符“>>”从键盘输入 数据时,键盘输入的数据先放着键盘的缓 冲区中,当按回车键时,键盘缓冲区中的 数据送入内存输入缓冲区形成cin流,然后 提取运算符“>>”从输入缓冲区提取数据 送给程序中的变量。

流类库与输入输出

流类库与输入输出

1 或 0

Byte字节: 8 位


可以存储一个字符 (char) 可以用双字节表示长的字符(wchar_t)

域Field: 一组有意义的字符

姓名
4
C++语言程序设计
数据层次

记录Record: 一组有关系的域

C中的struct或 C++中的class

文件File: 一组相关的记录


从文件中读 取一个字符
例get1.cpp
28
C++语言程序设计
如何读一行字符
#include<iostream> #include <fstream> using namespace std;
void main() { const int SIZE=80; char buffer[SIZE]; cout <<"string:"; cin.getline(buffer,SIZE); cout<<buffer<<endl; }
C++语言程序设计
第十一章 流类库与输入/输出
C++语言程序设计
本章主要内容
I/O流的概念 输出流 输入流

输入/输出流
2
C++语言程序设计
简 介

数据存储
存储在变量和数组中的数据是临时的 文件是用来永久保存大量数据的

磁盘
光盘
磁带
3
C++语言程序设计
数据层次

Bit “位” (二进制数字)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
点击访问格式控制标志相关接口函数
【例9.1】整型数输出。
basic_ ios
指针 basic_ streambuf
basic_ istream basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
图9.1 主要输入/输整出理p流pt 模板层次
3
9.1 C++的基本流类体系
right=0x0004,
//输出右对齐
internal=0x0008, //在输出符号或数制字符后填充
dec=0x0010, //在输入输出时将数据按十进制处理
oct=0x0020, //在输入输出时将数据按八进制处理
hex=0x0040, //在输入输出时将数据按十六进制处理
整理ppt
7
9.2 输入输出的格式控制(选读)
“插入”的含义是指输出操作,可看作向流中插入一个字 符序列。
cin使用提取运算符。 cout、cerr和clog使用插入运算符。
文件:
文件处理完成永久保存的功能。 在Windows下不同的C++平台,都为文件功能作了扩充, 在VC++的MFC编程中采用了序列化(Serialization)。
整理ppt
6
9.2 输入输出的格式控制(选读)
格式控制符:
C++在类ios_base中提供格式化输入输出。这些格式 是对所有文本方式的输入输出流均适用。格式控制符 定义为公有的无名枚举类型,在VC++6.0中定义为:
enum{
skipws=0x0001,
//跳过输入中的空白字符
left=0x0002,
//输出左对齐
整理ppt
5
9.1 C++的基本流类体系
提取运算符和插入运算符:
重载的提取运算符“>>”(stream_extraction operator) 和插入运算符“<<”(stream_insertion operator),执行输 入/输出操作。
“提取”的含义是指输入操作,可看作从流中提取一个字 符序列。
第九章 流类库和输入/输出
本章的最主要目的就是把对象保存到磁盘文件中并从 磁盘文件重建对象。
C++语言中并没有输入/输出语句,而是在标准库 里包含了一个I/O流类库,它与标准模板库同为C++标 准库中最重要的组成部分。数据从一个对象到另一个对 象的传送被抽象为“流”。数据的输入/输出就是通过 输入/输出流来实现的。
空白字符包括:空格、制表、垂直制表、换行、换页和 回车。
整理ppt
8
9.2 输入输出的格式控制(选读)
该枚举量说明中每一个枚举量实际对应两字节数据(16 位)中的一个位,所以可以同时采用几个格式控制,只 要把对应位置1即可,这样既方便又节约内存。取多种 控制时,用或“|”运算符来合成,合成为一个长整型数, 在ios中为: protected:
流是一种抽象的概念,负责在数据的产生者和数据 的使用者之间建立联系,并管理数据的流动。
整理ppt
1
Hale Waihona Puke 第九章 流类库和输入/输出
9.1 C++的基本流类体系 9.2 输入输出的格式控制(选读) 9.3 标准设备的输入/输出
9.4 文件的输入与输出 9.5 字符串流(选读) 9.6 文件与对象
整理ppt
long x_flags;
点击访问x_flags的重载函数定义
整理ppt
9
9.2 输入输出的格式控制(选读)
输入输出流格式控制标志:
protected: int x_precision; //标志浮点数精度,默认为6位 int x_width; //输出域宽,默认域宽为0, //重设域宽只对其后第一输出项有效,如域宽不足,则不受限制 char x_fill; //标志域宽有富余时填入的字符
有关模板派生请参见教学指导书第8章中“类模板的派 生的讨论”
整理ppt
4
9.1 C++的基本流类体系
标准输入/输出流对象:
在C++的流类库中定义了四个全局流对象:cin, cout,cerr和clog。可以完成人机交互的功能。
cin标准输入流对象,键盘为其对应的标准设备。 cout标准输出流对象,显示器为标准设备。 cerr和clog标准错误输出流,输出设备是显示器。 其中cin、cout和clog是带缓冲区的,缓冲区由 streambuf类对象来管理。而cerr为非缓冲区流,一旦 错误发生立即显示。 要使用这四个功能,必须包含<iostream>文件。
2
9.1 C++的基本流类体系
流类体系:以抽象类模板basic_ios为基类,流类模板派生体系见图
9.1。整个流类模板体系的标准I/O在头文件<iostream>中说明,它包含 头文件<ios>、<streambuf>、<istream>和<ostream>。而输入输出 文件流部分在头文件<fstream>中说明。
流类体系说明:
basic_streambuf不是basic_ios的派生类,而是一个 独立的类,只是basic_ios有一个保护访问限制的指针指 向它。 类basic_streambuf的作用是管理一个流的缓冲区。
basic_ios类模板提供了对流进行格式化输入输出和错 误处理的成员函数。所有派生都是公有派生。 basic_istream类模板提供完成提取(输入)操作的成员函 数,而basic_ostream类模板提供完成插入(输出)操作 的成员函数。basic_iostream类本质上是前两者的聚合, 并没有增加成员。派生全部为公有派生。
fixed=0x1000,
//定点数方式输出实数
unitbuf=0x2000,
//插入后,立即刷新流
stdio=0x4000} //插入后,立即刷新stdout和stderr
对不同的C++平台,枚举常量名相同,但所取值及枚举 类型名不一定相同。后文的枚举常量也是如此。为保证 通用性,实际只用枚举常量名而不用数值
showbase=0x0080, //在输出时带有表示数制基的字符
showpoint=0x0100, //输出浮点数时,必定带小数点
uppercase=0x0200, //输出十六进制,用大写
showpos=0x0400,
//输出正数时,加”+”号
scientific=0x0800,
//科学数方式输出浮点数
相关文档
最新文档