C++的输入流和输出流介绍

电子说

1.3w人已加入

描述

背景

C++的输入流和输出流是C++标准库中的两个重要的流类,分别用于输入和输出数据。在本篇博客中,我们将详细介绍C++的输入流和输出流,包括流的概念、流的类型、流的操作和流的应用等方面。

什么是流

在C++中,流是一种抽象的数据类型,用于表示数据的输入和输出。流可以是文件、键盘、屏幕、网络等数据源或数据目的地。流的输入和输出是以字符为单位进行的,可以是字符、整数、浮点数、字符串等数据类型。

C++标准库中提供了两个重要的流类:输入流和输出流。输入流用于从数据源中读取数据,输出流用于向数据目的地中写入数据。输入流和输出流都是基于流缓冲区的,可以提高数据的读写效率。

流的分类

在C++中,流可以分为两种类型:文本流和二进制流。文本流是以文本形式读写数据,可以读写字符、字符串、整数、浮点数等数据类型。二进制流是以二进制形式读写数据,可以读写任意类型的数据,包括结构体、数组、指针等数据类型。

C++标准库中提供了多种流类,包括:

  • istream:输入流类,用于从数据源中读取数据。
  • ostream:输出流类,用于向数据目的地中写入数据。
  • ifstream:文件输入流类,用于从文件中读取数据。
  • ofstream:文件输出流类,用于向文件中写入数据。
  • fstream:文件流类,既可以读取文件,也可以写入文件。
  • stringstream:字符串流类,用于读写字符串。
  • istringstream:字符串输入流类,用于从字符串中读取数据。
  • ostringstream:字符串输出流类,用于向字符串中写入数据。

流的操作

在C++中,流的操作包括输入操作和输出操作。输入操作用于从流中读取数据,输出操作用于向流中写入数据。流的输入和输出操作都是以运算符的形式进行的,包括:

  • 输入运算符(>>):用于从流中读取数据。
  • 输出运算符(<<):用于向流中写入数据。 例如,下面的代码演示了如何使用输入流和输出流读写数据:
#include 
#include 
using namespace std;

int main() {
    int x, y;
    ofstream fout("data.txt");
    fout << 123 << " " << 456 << endl;
    fout.close();
    ifstream fin("data.txt");
    fin >> x >> y;
    cout << x << " " << y << endl;
    fin.close();
    return 0;
}

在这个例子中,首先使用ofstream类创建了一个文件输出流,向文件中写入了两个整数。然后使用ifstream类创建了一个文件输入流,从文件中读取了两个整数,并打印出来。

标准输入输出流

标准输入输出流是C++中最常用的流类,用于从键盘读取输入和向屏幕输出数据。在C++中,标准输入输出流分别对应于cin和cout对象。cin对象用于从键盘读取输入,cout对象用于向屏幕输出数据。例如:

#include 
using namespace std;

int main() {
    int num;
    cout << "请输入一个整数:";
    cin >> num;
    cout << "您输入的整数是:" << num << endl;
    return 0;
}

在这个例子中,我们使用了cin对象从键盘读取输入,使用了cout对象向屏幕输出数据。

文件输入输出流

文件输入输出流用于从文件中读取数据或向文件中写入数据。在C++中,文件输入输出流分别对应于ifstream和ofstream类。ifstream类用于从文件中读取数据,ofstream类用于向文件中写入数据。例如:

#include 
#include 
using namespace std;

int main() {
    ofstream outfile("example.txt");
    outfile << "Hello, World!" << endl;
    outfile.close();

    ifstream infile("example.txt");
    string content;
    getline(infile, content);
    cout << content << endl;
    infile.close();

    return 0;
}

在这个例子中,我们使用了ofstream类向文件中写入数据,使用了ifstream类从文件中读取数据。

字符串流

字符串流用于将数据读取到字符串中或将字符串写入到流中。在C++中,字符串流分别对应于istringstream和ostringstream类。istringstream类用于将数据读取到字符串中,ostringstream类用于将字符串写入到流中。例如:

#include 
#include 
using namespace std;

int main() {
    int num = 0;
    string content = "您输入的整数是:123";
    istringstream iss(content);
    string str;
    iss >> str;
    iss >> num;
    cout << str << " " << num << endl;
    return 0;
}

在这个例子中,我们使用了istringstream类将字符串中的数据读取到变量中。首先,我们定义了一个int类型的变量num,并将其初始化为0。然后,我们定义了一个字符串流对象iss,并将字符串content传入其中。接着,我们定义了一个string类型的变量str,并使用iss对象从字符串中读取第一个单词“您输入的整数是:”。最后,我们使用iss对象从字符串中读取第二个单词“123”,并将其赋值给num变量。最终,我们使用cout输出str和num的值。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分