C++ 函数有哪些 STL 函数与 I/O 操作相关?

来源:语言推理作者:零壳头衔:程序员
导读:本期聚焦于小伙伴创作的《C++ 函数有哪些 STL 函数与 I/O 操作相关?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C++ 函数有哪些 STL 函数与 I/O 操作相关?》有用,将其分享出去将是对创作者最好的鼓励。

C++标准模板库(STL)中提供了丰富的与I/O操作相关的函数,这些函数主要封装在iostream、fstream、sstream等相关头文件中,覆盖了控制台输入输出、文件读写、字符串流处理等多种场景,是C++程序实现数据交互的核心工具。

C++ 函数有哪些 STL 函数与 I/O 操作相关?

控制台I/O相关STL函数

控制台I/O是最基础的使用场景,相关函数主要定义在<iostream>头文件中,常用的函数如下:

基础输入输出函数

std::cinstd::cout是最常用的流对象,配合提取运算符>>和插入运算符<<实现基础输入输出,同时还有对应的函数版本:

  • get():读取单个字符,包括空白字符,返回读取的字符,失败返回EOF
  • getline():读取一行字符串,直到遇到换行符,默认丢弃换行符
  • put():输出单个字符

以下是基础控制台I/O函数的使用示例:

#include <iostream>
#include <string>

int main() {
    // 使用get读取单个字符
    char c;
    std::cout << "请输入一个字符: ";
    c = std::cin.get();
    std::cout.put(c) << std::endl;

    // 清空输入缓冲区,避免换行符影响后续读取
    std::cin.ignore(1024, 'n');

    // 使用getline读取一行字符串
    std::string line;
    std::cout << "请输入一行文本: ";
    std::getline(std::cin, line);
    std::cout << "你输入的内容是: " << line << std::endl;

    return 0;
}

格式化控制函数

STL提供了多个函数用于控制输出的格式,这些函数定义在<iomanip>头文件中:

  • setw(int n):设置输出字段的宽度为n个字符
  • setprecision(int n):设置浮点数的精度为n位
  • setfill(char c):设置字段填充字符为c
  • fixed:以固定小数位格式输出浮点数
  • hex/oct/dec:设置整数输出为十六进制、八进制、十进制

格式化函数的使用示例:

#include <iostream>
#include <iomanip>

int main() {
    double num = 3.1415926;
    // 设置精度为3位,固定小数格式
    std::cout << std::fixed << std::setprecision(3) << num << std::endl;

    int val = 255;
    // 分别以十进制、十六进制、八进制输出
    std::cout << std::dec << val << std::endl;
    std::cout << std::hex << val << std::endl;
    std::cout << std::oct << val << std::endl;

    // 设置字段宽度和填充字符
    std::cout << std::setfill('*') << std::setw(10) << 123 << std::endl;

    return 0;
}

文件I/O相关STL函数

文件操作相关的函数和类定义在<fstream>头文件中,主要通过std::ifstream(输入文件流)、std::ofstream(输出文件流)、std::fstream(读写文件流)三个类实现,常用成员函数如下:

文件打开与关闭函数

  • open(const char* filename, ios_base::openmode mode):打开指定路径的文件,设置打开模式
  • close():关闭当前打开的文件
  • is_open():判断文件是否成功打开,返回布尔值

文件读写函数

文件流的读写函数和控制台流类似,同样支持>><<运算符,也有get()getline()put()等成员函数,此外还有read()write()函数用于二进制读写:

  • read(char* buffer, streamsize size):从文件读取size个字节到buffer中
  • write(const char* buffer, streamsize size):将buffer中的size个字节写入文件

文件I/O函数的使用示例:

#include <iostream>
#include <fstream>
#include <string>

int main() {
    // 写入文件
    std::ofstream outFile;
    outFile.open("test.txt", std::ios::out | std::ios::trunc);
    if (!outFile.is_open()) {
        std::cout << "文件打开失败" << std::endl;
        return 1;
    }
    outFile << "这是写入文件的第一行" << std::endl;
    outFile << "这是写入文件的第二行" << std::endl;
    outFile.close();

    // 读取文件
    std::ifstream inFile("test.txt", std::ios::in);
    if (inFile.is_open()) {
        std::string line;
        while (std::getline(inFile, line)) {
            std::cout << line << std::endl;
        }
        inFile.close();
    }

    return 0;
}

字符串流I/O相关STL函数

字符串流相关功能定义在<sstream>头文件中,主要通过std::istringstream(输入字符串流)、std::ostringstream(输出字符串流)、std::stringstream(读写字符串流)实现,常用于字符串和其他数据类型的转换、字符串分割等场景:

  • str():获取或设置字符串流内部的字符串
  • str(const string& s):将字符串s设置为流的内部字符串

字符串流函数的使用示例:

#include <iostream>
#include <sstream>
#include <string>

int main() {
    // 字符串转其他类型
    std::string numStr = "12345";
    std::istringstream iss(numStr);
    int num;
    iss >> num;
    std::cout << "转换后的整数: " << num << std::endl;

    // 其他类型转字符串
    std::ostringstream oss;
    double d = 3.14;
    oss << d;
    std::string dStr = oss.str();
    std::cout << "转换后的字符串: " << dStr << std::endl;

    // 字符串分割
    std::string data = "apple,banana,orange";
    std::stringstream ss(data);
    std::string item;
    while (std::getline(ss, item, ',')) {
        std::cout << item << std::endl;
    }

    return 0;
}

其他常用I/O辅助函数

除了上述分类的函数外,STL还提供了一些通用的I/O辅助函数:

  • std::ios_base::sync_with_stdio(bool sync):设置是否同步C++流和C标准流,关闭同步可以提升cin/cout的效率
  • std::cin.tie(nullptr):解除cincout的绑定,进一步加快输入速度
  • std::flush:刷新输出缓冲区,确保缓冲区内容立即输出

这些辅助函数的使用示例:

#include <iostream>

int main() {
    // 关闭流同步,提升输入输出效率
    std::ios::sync_with_stdio(false);
    // 解除cin和cout的绑定
    std::cin.tie(nullptr);

    int a, b;
    std::cin >> a >> b;
    std::cout << a + b << std::flush; // 刷新缓冲区输出结果

    return 0;
}

C++STLIO操作iostream函数修改时间:2026-07-20 07:00:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。