创作内容不易,学习的朋友麻烦关注下博主,后面学习不迷路。有不会的问题也可以论坛咨询博主,博主也会及时回复~~
目录
1.简单的输入和输出
在我们使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据(文本数据),然后,cin对象负责将文本转换为其他类型。
而对出输出,将执行相反的转换。控制台输入的文件版本是文本文件。即每个字节都存储了一个字符编码的文件。但也不是所有的文件都是文本文件。比如数据库和电子表格以数值格式(即二进制整数或浮点格式)来存储数值数据。还有字处理文件中可能包含文本信息,但也可能包含用于描述格式字体,打印机等的非文本数据。
写入到文本文件
头文件:fstream
类:ofstream
对象:自己定义
功能:自己定义的对合可以和cout对象那样操控输出流。
open()打开文件。close()关闭文件
在这个例子当中,我们打开文件hello.txt。如果存在则会将当前文件当中的所有内容情况,在写入。如果没有则会自动创建文件。也可以直接使用构造函数 ofstream fon("hello.txt")来打开文件
读取文件内容
头文件:fstream
类:ifstream
对象:自己定义
功能:自己定义的对合可以和cin对象那样操控输出流。
open()打开文件。close()关闭文件
这里我们在从hello.txt将之前我们写入的内容在读取出来。这里也可以直接使用 ifstream fin("hello.txt")打开文件。需要直到的是像fon.close()和fin.close()关闭这样的链接并不会删除流,而只是断开流到文件的链接。然而,流管理装置仍被保留
good()方法
good()方法,在ifstream方法当中有一个good方法。这个方法指出最后一次读取输入的操作是否成功(当然了你使用cin使用的eof和fail也是可以的)。
这里fin和cin一样会省略掉空格,输入单词,最后将文件当中的"hello world"分别两次读取给ch。最后一次遇到EOF,fin.good()变为false结束。这里还有一个技巧,fin >> ch的结果就是对象fin,而在需要一个bool值得情况下,fin的结果就是fin.good(),既true或flase;
2.文件模式
常量 | 含义 |
ios_base::in | 打开文件,以便读取 |
ios_base::out | 打开文件,以便写入 |
ios_base::ate | 打开文件,并移到文件尾 |
ios_base::app | 追加到文件尾 |
ios_base::trunc | 如果文件存在,则截短文件 |
ios_base::binary | 二进制文件 |
一般ifstream open()方法和构造函数用ios_base::in(打开文件以读取)作为模式参数的默认值
而ofstream open()方法和构造函数用ios_base::out | ios_base::trunc(打开文件,以读取并截断文件)作为默认值
C++模式 | C模式 | 含义 |
ios_base::in | "r" | 打开以读取 |
ios_base::out | "w" | 等价于ios_base::out | ios_base::trunc。打开文件以写入,如果已经存在,则截短文件 |
ios_base::out | ios_base::app | "a" | 打开以写入,只追加 |
ios_base::in | ios_base::out | "r+" | 打开以读取,在文件允许的位置写入 |
ios_base::in | ios_base::out | ios_base::trunc | “w+" | 打开以读写,如果已经存在,则首先截短文件 |
c++mode | ios_base::binary | "cmodeb" | 以C++mode和二进制模式打开;列如ios_base::in | ios_base::binary称为"rb" |
c++mode | ios_base::ate | "cmode | 以指定的模式打开,并移到文件尾。C使用一个独立的函数调用,而不是模式编码。列如,ios_base::in | ios_base::ate被转换为"r"模式和C函数调用fseek(file,0,SEEK_END) |
我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈