如何正确使用 C++ 标准流对象

Leo
Leo
发布时间:2026-08-24 | 173人浏览过
原创

前言

C++ 标准流的核心是三件事:选对对象、检查状态、用操纵符控制格式。掌握 cin/cout/cerr/clog 的职责,配合失败恢复与常见格式化写法,就能把控制台、文件和日志场景用成一套稳定模式。

标准流对象分别负责什么

C++ 用统一流接口处理控制台、文件等 I/O。常用标准流都来自 <iostream>:

标准流对象职责与状态标志对照信息图
标准流对象与状态标志用一张图梳理 `cin`、`cout`、`cerr`、`clog` 的分工,以及。
流对象描述
cin标准输入流
cout标准输出流
cerr标准错误输出流
clog日志输出流

常用状态检查:good()、fail()、bad()、eof()。

#include <iostream>

int main() {
    int number;
    std::cout << "输入一个数字:";
    std::cin >> number;
    std::cout << "你输入的是:" << number << std::endl;
    std::cerr << "这是一条错误消息" << std::endl;
    return 0;
}

输入输出怎么写得更稳妥

std::cin >> 会按目标类型解析。按字符、整行、二进制块读取时可用 get()、getline()、read()。

输入失败恢复与文件流写入流程信息图
输入恢复与文件流流程聚焦实际编程里最容易踩坑的两件事:输入失败后的恢复流程,以及文件流写入时的基本动作。

关键是处理失败输入:先 clear(),再 ignore() 丢弃无效内容。

#include <iostream>
#include <limits>

int main() {
    int input;
    while (!(std::cin >> input)) {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "输入无效。请重试:";
    }
    return 0;
}

文件流接口风格一致:

#include <fstream>
#include <iostream>

int main() {
    std::ofstream outFile("example.txt");
    outFile << "在LabEx环境中写入文件" << std::endl;
    outFile.close();
    return 0;
}

常用流操纵符有哪些

常见操纵符分为进制、精度、对齐和输入空白控制。

常用流操纵符分类与格式效果信息图
流操纵符速查图把进制、精度、对齐和状态控制几类常用操纵符放到同一张图里,方便快速查找。
#include <iostream>
#include <iomanip>

int main() {
    int value = 42;
    double pi = 3.14159265358979;
    std::cout << std::hex << value << std::endl;
    std::cout << std::dec << value << std::endl;
    std::cout << std::oct << value << std::endl;
    std::cout << std::fixed << std::setprecision(2) << pi << std::endl;
    std::cout << std::scientific << pi << std::endl;
    std::cout << std::right << std::setw(10) << std::setfill('*') << 42 << std::endl;
    std::cout << std::left << std::setw(10) << "LabEx" << std::endl;
    std::cout << std::boolalpha << true << std::endl;
    return 0;
}
操纵符作用
dec/hex/oct切换进制
fixed/scientific/setprecision()控制浮点格式与精度
setw()、left、right、setfill()控制宽度与对齐
boolalpha输出 true/false
skipws、noskipws、ws控制空白字符处理

写标准流代码时的实用建议

先区分 cout、cerr、clog 的用途;关键读取后检查状态;输入失败时及时 clear() 与 ignore();统一格式优先用操纵符;文件流用完关闭;浮点输出明确精度。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表