C第12章-IO流类库PPT课件

合集下载

流类库和输入输出C程序设计第2版课件

流类库和输入输出C程序设计第2版课件
ifstream ifile("test"); //打开test文件用于读,即输入
if (!ifile)
{ cout << "test文件不能打开" << endl;
return 0; } char str[80]; ifile >> str; // 与get不同, >>遇到空格时结束 ifile.close();
int=filebuf::openprot);
ofstream::ofstream(const char*,int=ios::out, int=filebuf::openprot);
fstream::fstream(const char*,int, int=filebuf::operprot);
所以1,2两步可合成: fstream iofile(”myfile.txt”,ios::in|ios::out);
int=filebuf::opernprot); void fstream::open(const char*,int,
int=filebuf::openprot); 第一个参数为要打开的磁盘文件名。第二个参数为打开方式, 有输入(in),输出(out)等,打开方式在ios基类中定义为 枚举类型。第三个参数为指定打开文件的保护方式,一般取默 认。所以第二步可如下进行: iofile.open(“myfile.txt”,ios::in|ios::out);
指针
streambuf
istream
ostream
ifstream
iostream
fstream
主要输入/输出流模板层次
ofstream
第2页,共21页。

流类库与输入输出-精品.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;

面向对象程序设计IO流.pptx

面向对象程序设计IO流.pptx
else cout<<a/b<<endl;
} int main(){
fn(20,2); fn(20,0); }
6
第7页/共28页
3 文件流类
文件是保存在存储介质上一系列数据的集合, 可用于进行读或写操作。
“文件”的两种含义:一种外部设备,如打印 机,屏幕;另一种磁盘文件,即放在磁盘上的 文件,每个文件都有一个文件名。
//重载为友元函数 ostream& operator <<(ostream& sm, Clock c) {
sm <<"time: "<<c.Hour<<":"<<c.Minute<<":“ <<c.Second<<endl;
//c.ShowTime(); return stream; }
int main(){ Clock c1(12,29,30),c2(16,1,34); cout<<c1<<c2;
3
第4页/共28页
2 预定义的标准流与提取和插入运算 符
iostream.h中定义了四个全局流对象:
cin:标准输入流 键盘 (缓冲流)
cout:标准输出流 显示器(缓冲流)
cerr:标准错误输出流 显示器(非缓冲流)
clog:打印输出流 打印机(缓冲流)
例:cout对象在iostream.h中的定义:
}
23
第24页/共28页
插入运算符重载函数与虚函数
重 载 插 入 运 算 符 不 是 成 员 函 数 , 也 就 不 能 是 虚 函数。

第12章流类库和输入输出概论

第12章流类库和输入输出概论

第12章流类库和输入输出【内容提要】流的概念及流类库输入输出的格式控制输入与输出运算符的重载文件操作【重点与难点】12.1 流的概念及流类库12.1.1 流的概念C++中的流是指数据从一个对象传递到另一个对象的操作。

从流中读取数据称为提取操作,向流内添加数据称为插入操作。

流在使用前要建立,使用后要删除。

如果数据的传递是在设备之间进行,这种流就称为I/O流。

C++专门内置了一些供用户使用的类,在这些类中封装了可以实现输入输出操作的函数,这些类统称为I/O流类。

C++流预定义了4个标准流类对象,它们可以直接用来输入输出。

这些标准流类对象都包含在头文件iostream.h中。

istream cin; //与标准输入设备相关联的标准输入流。

ostream cout; //与标准输出设备相关联的标准输出流。

ostream cerr; //与标准错误输出设备相关联的非缓冲方式的标准输出流。

ostream clog; //与标准错误输出设备相关联的缓冲方式的标准输出流。

12.1.2 流类库C++的流类库有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。

使用这些流类库时,必须包含相应的头文件。

ios类及其派生类为用户提供了使用流类的接口。

以下给出ios类及其派生类的层次结构图。

iosistreamifstreamistream_withassign iostreamistrstream fstreamostream strstreamofstream sdiostreamostream_withassignostrstream图12.1 ios类的层次关系12.2 输入输出的格式控制C++仍可使用C中的printf()和scanf()进行格式化控制,同时又提供了两种格式化控制的方法,一是使用ios类中的有关格式控制的成员函数,二是使用执行格式化输入/输出的格式控制符。

12.2.1 用ios类的成员函数进行格式控制使用这种方式进行格式控制主要是通过设置及清除格式状态标志、设置域宽、设置填充字符和设置输出精度的操作来完成的。

CIO流标准库实用PPT课件

CIO流标准库实用PPT课件
fin.open("data.txt“, ios::in); //打开文件并使 fin与该文件相关联
方法2: ifstream fin("data.txt",ios::in);
第3209页/共86页
从文件中读取数据
#include <fstream>
#include <iostream>
using namespace std;
第112页/共86页
文件的概念
文件 文件是在计算机内存中以二进制表示的数据在 外部存储介质上的另一种存放形式。它可以使数据得 以长期保存。
C++把每个文件都看成是一个有序的字节序列,每个文件都以 文件结束标志结束。例如:
12 3 4 5
n-1
… 文件结束符
第132页/共86页
文件操作
前面,我们讨论的输入输出都是以键盘 为输入设备,显示器为输出设备。在实际应 用中,常以磁盘文件作为输入/输出的对象。
// 写两行
fout << "John" << " " << 90 << endl;
fout << "Eric" fout.close();
/</关< "闭" 文<<件85
<<
endl;
return 0;
}
第232页/共86页
向文件中写数据
fout << "John" << " " << 90 << endl; scores.txt John 90 文件中的内容 Eric 85 fout << "Eric" << 85 << endl;

输入输出流(IO流)PPT教学课件

输入输出流(IO流)PPT教学课件

{
File("C:\\1000","Example20_1.java");
File("c:\\1000");
System.out.println("文件Example20_1是可读的
吗:"+f1.canRead());
System.out.println("文件Example20_1的长度:"+f1.length());
2020/12/10
18
11.4 类和类
例子5: 例子6:
2020/12/10
19
11.5 使用文件对话框打开和保存文件
例子7:
2020/12/10
20
11.6 运行可执行文件
使用ng包中的Runtime类可以运行本 地计算机上的可执行文件。
例如:
Runtime ec; ec=Runtime.getRuntim(); ec.exec(String command); 例子8: 运行记事本

2020/12/10
5
11.1 File类
public getParent():获取文件的父目录
public isFile():判断文件是否是一个正常文件而 不是一个目录。
public boolean isDirectory():判断文件是否是 一个目录
public boolean isHidden():判断文件是否是隐 藏文件
处理I/O异常
I/Oexception,并try...catch try{} catch( I/Oexception e){}
2020/12/10
12
11.2 类

C#教学课件Chap12IO

C#教学课件Chap12IO

7
文件类型 文件属性 文件访问方式

8
文件属性用于描述文件本身的信息,主要包括以下几方面:
(1)文件属性:有只读、隐藏和归档等类型(FileAttrubutes) (2)访问方式:有读、写、追加数据等类型( FileMode) (3)访问权限:有读、读/写和写等类型(FileAccess) (4)共享权限:有文件共享、文件不共享等类型 (FileShare)
2
文件是永久存储在磁盘等介质上的一 组数据,操作系统通过唯一的文件名进行 管理。很多程序需要读写磁盘文件,涉及 文件的建立、从文件中读出数据和向文件 中写入数据等。
3
文件类型 文件属性 文件访问方式

4

文件类型
按照文件存取方式及结构,文件分为顺序文件和
随机文件
顺序文件特点: 由若干文本行组成,每个文本行结尾为一个回车字符(ASCII为13,称为行分界 符),文件结尾为Ctrl+Z(ASCII码为26); 每个字符用一个字节存储,可以使用记事本浏览、编辑和创建。 顺序文件优缺点:
6
字段1 字段2 … 记录n+1
行n+1


文件类型
按照文件数据组织格式,文件分为ASCII文件和
二进制文件
ASCII文件特点:
ASCII文件又称为文本文件,每个字符存放一个ASCII码,输出时每个字节代表一 个字符,便于对字节逐个处理,但占用空间大,转换时间长。
二进制文件特点: 数据以二进制方式存储,存储的基本单位为字节 能够存取任意所需要的字节,可以把文件指针移动到文件的任意位置,这种存取方式 最为灵活。
C#程序设计进阶
第12章 文件IO操作

C++的IO流库

C++的IO流库

预定义的插入符(续)
例1:分析下列程序的输出结果。 #include <iostream.h> #include <string.h> 地址值的 void main() 十进制 { 表示方法 char *str="Hello"; //字符指针 地址值的 int a=100; 十六进制 int *pa=&a; 表示方法 cout<<"*pa="<<*pa<<endl; cout<<"&pa="<<&pa<<" or "<<long(&pa)<<endl; cout<<"The string is "<<str<<endl; cout<<"The address is "<<(void *)str 字符指 <<" or "<<long((void *)str)<<endl; 针地址 }
预定义的提取符(续)
例4:分析下列程序的输出结果。
#include <iostream.h> #include <string.h> void main() { const int SIZE=20; char buf[SIZE]; char *largest; int curLen; int maxLen=-1; int cnt=0; cout<<"Input words:"<<endl;
•cerr:ostream类对象,处理标准出错信息,提供 不带缓冲区的输出; •clog:ostream类对象,处理标准出错信息,提供 带缓冲区的输出;

c++12输入输出

c++12输入输出

注:格式标志参见表13.5 格式标志参见表
输出格式控制
精度控制
setprecision
例: cout << setiosflags(ios::scientific) << setprecision(2) << values[i];
输出流成员函数
<<:任何基本类型数据(包括字符串 :任何基本类型数据 包括字符串 包括字符串) put:输出单个字符 : write:输出二进制数据 : width:数据宽度 : ...
ofile.open("filename”); 默认方式打开,如果文件 默认方式打开, 已存在就打开并清空,没有的话会新建一个再打开 已存在就打开并清空, ofile.open("filename", ios::out); ofile.open("filename", ios::app); ofile.open("filename", ios::nocreate); ofile.open("filename", ios::binary); …
infile.open("filename", ios::in); infile.open("filename", ios::nocreate); infile.open("filename", ios::binary); …
注:文件的默认打开模式是文本模式 文件的默认打开模式是文本模式
磁盘文件输入(4) 磁盘文件输入
磁盘文件输出举例
#include<fstream.h> void main() { ofstream outfile; outfile.open("out.dat", ios::app); outfile<<"Hello world"<<endl; outfile.close(); }

C++语言程序设计第12章文件和流类库

C++语言程序设计第12章文件和流类库

9
(4)文件与流的关系 通过打开操作流与某文件关联起来。一旦建立关 联,流与文件几乎就没有什么区别了,对流的操 作就是对文件的操作。通过关闭操作,文件与流 断开连接。为输出而打开的流,在关闭文件时与 它相关的流写到外设中。这一过程通常叫做清仓 ,它保证了在磁盘缓冲区中不留下任何信息。
10
(5)流类库 C ++语言中没有输入/输出操作的语句,输入 /输出( Input/Output简称 I/O)操作是用C ++ 的 I/O 流类来实现的,C ++提供了一个 I/O 流 类库。C ++的 I/O 流类,是最常用的 I/O系统。 为了与 C 兼容,C ++保留了 C 的标准 I/O 库, 也可以使用 C 的标准 I/O 库进行输入 /输出操 作。
2
(3)文件的分类 文件可以从不同的角度来分类: ①按文件所依附的介质来分有:磁盘文件、 磁带文件、内存文件、设备文件等。 ②按文件内容来分有:源文件、目标文件、 数据文件等。 ③按文件中数据组织形式分有:文本(text )文件和二进制(binary)文件。 ④按照操作系统对磁盘文件的读写方式,文 件可以分为“缓冲文件系统”和“非缓冲文件系 统”。
3
(4)文件缓冲 我们要对文件进行输入 /输出,意味着要启 动磁盘的写/读操作,即对一个字符(文本文件) 或一个字节(二进制文件)的输入 /输出都要启 动磁盘操作,这将会大大降低传输效率(因磁盘 是慢速设备),而且降低了磁盘的使用寿命,为 此使用了缓冲文件系统。
4
(5)文件的打开与关闭 应用程序必须显式打开和关闭文件,打开文 件时可按文本或二进制方式打开。某文件一旦打 开,里面的信息就可以在程序与该文件之间交换 。当程序结束所有文件都自动关闭,并通过 main ()或 exit()返回操作系统。如果程序因故障崩 溃而终止,则文件不关闭。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

void main()
{ cout.put('B').put('E').put('I').put('J').put('I').put('N').put('G').put('\n');
char *str="I love BEIJING!";
cout<<"The string is "<<str<<endl;
cout.write(const char *str,int n);
str是一个字符指针或字符数组名,用来存放 一个字符串,也可以是字符串常量; n用来指定输出字符串中字符的个数。
-
7
[例13.1]分析下列程序的输出结果,熟悉put()和write()函数的 用法。程序内容如下:
#include <iostream.h>
插入运算符可连续使用,但应注意计算顺序。 系统指定标准输出设备屏幕的对象为cout,将 输出流显示在屏幕上的格式如下: cout << <表达式1> << <表达式2> <<…… ;
使用中应注意<表达式>中运算符的优先级。
-
5
13.1.2 使用成员函数put()输出一个字符 成员函数put()的格式如下: ostream& cout.put(char c);
#include <string.h> void print(char *s) { cout.write(s,strlen(s)).put('\n');
cout.write(s,6)<<'\n'; }
输出结果如下: BEIJING The string is I love BEIJING! I love BEIJING! I love
lcnt++; if(count>lmax)
lmax=count; cout<<"Line # "<<lcnt<<":"<<count<<endl; cout.write(buf,count).put('\n').put('\n'); } cout<<endl; cout<<"Longest line: "<<lmax<<endl; cout<<"Total line: "<<lcnt<<endl; }
123 abc
输入<Ctrl+Z>后,退出程序。
-
11
13.2.3使用成员函数 getline()获取一行字符 该函数格式如下: getline(char *buf,int n,deline = ‘\n’); 该函数结束的条件:
①从输入流中读取n-1个字符 ②从输入流中读取到换行符 ③从输入流中读取到结束符
#include <iostream.h>
void main()
{
char ch;
cout<<"Etern a sentence:";
while((ch=cin.get())!=EOF)
cout.put(ch);
}
执行程序后,屏幕上显示如下信息:
Enter a sentence: 123 abc
显示结果如下:
-
13
执行该程序后,显示如下信息:
Enter a sentence:
This is a program.
ostream
ifstream iostream ofstream
fstream
图中给出有关文件操作的流类。 有关文件操作的类被放在fstream.h头文件中。
-
4
13.1屏幕输出操作
I/O流类库中ostream类提供了如下的输出操作。
13.1.1 使用预定义的插入符
插入符(<<)被重载定义在iostream.h头文件中。 ostream&operator << (<参数表>);
第12章 C++的I/O流类库
-
1
流的概念
C++的I/O是以字节流的形式实现的。输入 操作是字节从输入设备流向内存;输出 操作是字节从内存流向输出设备。流实 际上是一个字节序列。
-
2
基本的I/O流类
istream
ios (虚基类) ostream
iostream
这些基本的I/O流类被包含在iostream.h头文件 中,该头文件提供了大量用于I/O的操作。
print(str);
}
-
8
13.2 键盘输入操作
I/O流类库中istream类提供了如下的输入操作。
13.2.1 使用预定义的提取符
提取符(>>)被重载定义在iostream.h头文件中, 其格式如下: istream & operator>>(<参数表>); 提取运算符可连续使用,输入流中默认的输入 项的分隔符是空白符。 系统指定标准输入设备键盘的对象名cin ,使用 键盘输入数据格式如下: cin >> <表达式1> >> <表达式2> >>……;
-
12
[例13.3]分 析下列程序 输出结果, 并说明该程
序的功能。
#include <iostream.h> const int SIZE=80; void main() { char buf[SIZE];
int lcnt=0,lmax=-1; cout<<"Enter a sentence:\n"; while(cin.getline(buf,SIZE)) { int count=cin.gcount();
它还包含有两个重载运算符:<<(插入符)>>(提 取符)和4个标准流对象:
cin处理标准输入,即键盘输入;
cout处理标准输出,即屏幕输出;
cerr处理标准错误信息,提供不带缓冲区的屏 幕输出;
clog处理输出信息,提供打印机输出;
-
3
文件操作的I/O流类
istream
ios fstreambase
ostream& cout.put(const char c); 成员函数put()通过流对象名来调用,该 成员函数可以连续使用。 cout.put(‘A’).put(‘B’).put(‘C数write()输出一个字符串 成员函数write()是属于ostream类的,函 数格式如下:
-
9
13.2.2 使用成员函数get()获取一个字符 该函数格式如下:
char istream::get();
该函数为从指定的输入流中获取一个字 符存放在指定的变量或对象中。 例如, char ch = cin.get();
该语句表明从键盘输入中获取一个字符存放 在变量ch中。
-
10
[例13.2]分析下列程序的输出结果。
相关文档
最新文档