C++(八):fstream读写 *** 作

C++(八):fstream读写 *** 作,第1张

文件fstream定义了三个类型来支持文件IO *** 作。

要读写一个文件,可以定义一个文件流对象,并将对象与文件关联起来。每个文件流类都定义了一个名为open的成员函数,可以完成一些系统相关的 *** 作,来定位给定的文件,并视情况打开位读或写模式。

创建文件流对象时,可以提供文件名,此时会自动调用open

用fstream代替iostream& :在要求使用基类型对象的地方,可以使用继承类型的对象来代替。

成员函数open和close:如果定义了一个空文件流对象,可以调用open来将它与文件关联起来,如果调用open失败,failbit会被置位。

一旦文件流与文件关联起来,它会一直保存,此时别的流无法再与该文件绑定,所以有时需要关闭已关联的文件。

自动构造与析构: 用ifstream类型构造一个对象,如果该对象是一个循环中的局部变量,在每个循环中都要创建和销毁一次。当一个对象离开其作用域时,与之关联的文件会自动关闭,即自动调用close。

每个流都有一个关联的 文件模式 ,用来指出如何使用文件。

指定文件时有如下限制:

以out模式打开文件会丢弃已有数据: 默认情况下打开ofstream时,文件的内容会被丢弃。 阻止一个ofstream清空给定文件内容的方法时同时指定app模式

每次调用open时都会确定文件模式: 对于一个给定流,每当打开文件时,都可以改变其文件格式。

clothing是类,那么 Clothes 是什么?应当是结构。

Clothes temp

fout.write((char*) &temp,sizeof(Clothes) ) //调用 write() 输出整个结构

fout.flush() // 调用 flush()

// cout<<temp<<endl 不能这样输出结构, 只能 一个成员一个成员地输出, 例如:

cout <<temp.num <<" " <<temp.size <<" " <<temp.s <<endl

fstream file

file.open("filename")

之后file就可以当cin用了。

file.get(x)按字符获取

file>>double 类型数据(以空格为界)

过程:

1.遇到空格、\r\n、\n都会跳过,直到遇到字符类型或者数字类型的char

2.如果是字符类型,则double为0,并进入死循环

,则double类型为0,并掉入死循环_______

int类型也是如此,会卡住进入死循环。**

cin.ignore(num,char)忽略字符 提取数量为num的字符


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11696069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存