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

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

前言

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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。