C++流 小结

本文详细介绍了C++中的Stream概念,包括标准I/O流(如cin,cout)、文件I/O流(ifstream,ofstream)和字符串I/O流(istringstream,ostringstream),以及流的各种操作,如读写、状态检查和错误处理。
摘要由CSDN通过智能技术生成

C++流(Stream)是C++标准库中的一个重要组成部分,它提供了一种面向对象的方式来处理输入和输出操作。流可以将数据从一个地方传输到另一个地方,这个过程就像水流一样,因此被称为“流”。在C++中,流的实现主要依赖于标准模板库(STL)中的<iostream><fstream><sstream>等头文件。

1、标准I/O流 

内存与标准输入输出设备之间信息的传递

    std::cin:标准输入流,用于从键盘读取数据。

    std::cout:标准输出流,用于向屏幕输出数据。

    std::cerr:标准错误流,也用于向屏幕输出数据,但通常用于显示程序运行时的错误信息,它的缓冲区会立即刷新,确保错误消息能够立即被看到。

    std::clog:日志流,与cerr类似,但其行为与cout相同,即只有当缓冲区满或手动刷新时才会输出。

2、文件I/O流  

内存与外文件之间信息的传递

文件I/O流类位于<fstream>头文件中,它们允许程序从文件读取数据和向文件写入数据。

    std::ifstream:输入文件流,用于打开并读取文件。

    std::ofstream:输出文件流,用于创建并写入文件。

    std::fstream:输入/输出文件流,既可以读取也可以写入文件。

使用这些流时,需要先打开文件,然后进行读写操作,最后关闭文件。

例如:

#include <fstream>

int main()

{

    std::ifstream input("input.txt");

if (input)

 {

        // 读取文件内容

    }

    input.close();

    std::ofstream output("output.txt");

if (output)

{

        // 写入文件内容

    }

    output.close();

    return 0;

}

3、字符串I/O流 

内存变量与表示字符串流的字符数组之间信息的传递

字符串I/O流位于<sstream>头文件中,它们允许程序像操作文件一样操作内存中的字符串。

    std::istringstream:输入字符串流,可以从字符串中提取数据。

    std::ostringstream:输出字符串流,可以将数据插入到字符串中。

    std::stringstream:输入/输出字符串流,既可以提取也可以插入数据。

4、流的操作

流支持多种操作来读取和写入不同类型的变量,如整数、浮点数、字符串等。

以下是一些常见的操作:

    >>:提取运算符,用于从流中读取数据。

    <<:插入运算符,用于向流中写入数据。

    .get() 和 .getline():用于读取单个字符或一行文本。

    .put():用于写入单个字符。

    .read() 和 .write():用于读写一定数量的字节。

    .eof():检查是否到达了流的末尾。

    .good()、.bad()、.fail() 和 .eof():检查流的状态。

以下是一个简单的例子,展示了如何使用cin和cout进行基本的交互:

#include <iostream>

int main()

{

    int a, b;

    std::cout << "Enter two numbers: ";

    std::cin >> a >> b;

    std::cout << "The sum is: " << a + b << std::endl;

    return 0;

}

在这个例子中,首先定义了两个整数a和b,然后通过std::cin从用户那里读取两个数字,并将它们存储在a和b中。接着,计算这两个数字的和,并使用std::cout将结果输出到屏幕上。

5、总结

 1、当从流中提取数据时,如果遇到非法输入或者格式不匹配的情况,流会进入一种称为“失败”(failed)的状态,后续的读取操作可能会受到影响。为了处理这种情况,可以使用clear()函数清除流的状态标志,并使用ignore()函数跳过导致错误的数据。

 2、在读取或写入之前,最好检查流的状态,以确保流已经正确地打开了。这可以通过调用.is_open()方法来完成。

 3、对于文件流,记得在使用完毕后关闭文件,否则可能会导致数据丢失或资源泄漏。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值