本文介绍: 简单介绍了一下C++IO流相关知识

一、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、coutcerrclog

如果输入数据类型不是字符型或者字符串型时,用cin输入的话,空格和回车都可以作为数据之间的分隔符,多个数可以一行输入,也可以分行输入。

但是如果输入的数据类型字符型和字符串型时,用cin输入的话,空格和回车符是无法读取的。

三、C++文件IO流

1.ifstream

ifstream对应的是文件的读取操作我们可以构建ifstream对象来进行文件读取操作,它的构造函数两个

一个是无参构造函数,无参构造函数的话需要我们手动调用ifstream类里的open函数来打开一个指定的文件。

还有一个是有参构造函数,需要传递打开文件的文件名(带路径文件名),以及打开选项

在这里插入图片描述

打开的选项有inoutbinaryateapptrunc

下面我们演示一下ifstream对象的几种读取文件的方式

operator>>:
由于ifstream也是继承自ios类的,它也支持提取方式读取文件内容,这种方式支持读取空格和换行符

#include <iostream&gt;
#include <fstream&gt;

using namespace std;

int main()
{
    ifstream ifs("Test.cc", ios::in);
    char ch;
    while(ifs &gt;&gt; ch)
    {
        cout << ch;
    }
    return 0;
}

get函数:
ifstream对象可以istream类里的get函数来实现对文件内容的读取,get函数是按字节读取,一次读取一个字符,空格和换行符它都能读取到:

#include <iostream&gt;
#include <fstream&gt;

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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注