一、C++IO流体系
C++流是指信息从外部输入设备向计算机内部输入,从内存向外部输出设备输出的过程,这种输入输出的过程非常形象地被称为流的概念。IO流指的就是输入输出流。
我们平时对终端控制台的输入输出操作,对文件的输入输出操作以及对字符串的流操作,都属于C++的IO流体系。
C++系统实现了一个庞大的IO流体系,其中ios为父类,其它类都是直接或者间接继承自ios类。其中包括istream文件下的终端IO流、fstream文件下的文件IO流和sstream文件下的字符串IO流。
二、C++标准IO流
C++标准IO流即istream文件下的终端IO流,C++标准库提供了4个全局流对象:cin、cout、cerr、clog。
如果输入的数据类型不是字符型或者字符串型时,用cin输入的话,空格和回车都可以作为数据之间的分隔符,多个数据可以在一行输入,也可以分行输入。
但是如果输入的数据类型时字符型和字符串型时,用cin输入的话,空格和回车符是无法读取的。
三、C++文件IO流
1.ifstream
ifstream对应的是文件的读取操作,我们可以构建ifstream对象来进行文件读取操作,它的构造函数有两个:
一个是无参构造函数,无参构造函数的话需要我们手动调用ifstream类里的open函数来打开一个指定的文件。
还有一个是有参构造函数,需要传递打开文件的文件名(带路径的文件名),以及打开的选项。
打开的选项有in
、out
、binary
、ate
、app
、trunc
- in:对应文件读取操作,以读取文件的形式打开文件。
- out:对应文件写入操作,以写入文件的形式打开文件。
- binary:以二进制形式打开文件。
- ate:对应文件写入操作,打开文件时文件指针指向文件的末尾。
- app:对应文件写入操作,在文件末尾追加写入内容。
- trunc:文件打开以后,文件原来有的内容将被清空。
operator>>:
由于ifstream也是继承自ios类的,它也支持流提取方式读取文件内容,这种方式不支持读取空格和换行符:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs("Test.cc", ios::in);
char ch;
while(ifs >> ch)
{
cout << ch;
}
return 0;
}
get函数:
ifstream对象可以istream类里的get函数来实现对文件内容的读取,get函数是按字节读取,一次读取一个字符,空格和换行符它都能读取到:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs("Test.cc", ios::in);
char ch;
while(ifs)
{
ch = ifs.get();
cout << ch;
}
return 0;
}
2.ofstream
ofstream对应的是文件的写入操作,我们可以构建ofstream对象来进行文件的写入操作,它的构造函数和ifstream基本类似。
我们演示一下ofstream的写入操作:将上面ifstream的读取操作结合起来,用ifstream读取文件内容,再用ofstream写入到一个新的文件中:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream ifs("Test.cc", ios::in);
ofstream ofs("copy.cc", ios::out);
char ch;
while(ifs >> ch)
{
ofs << ch;
}
return 0;
}
原文地址:https://blog.csdn.net/2301_76366823/article/details/129912680
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25422.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!