C++系统IO

C++系统IO

头文件的使用

1.使用系统IO必须包含相应的头文件,通常使用#include预处理指令。

2.头文件中包含了若干变量的声明,用于实现系统IO。

3.头文件的引用方式有双引号和尖括号两种,区别在于查找路径的不同。

4.C++标准库提供的头文件通常没有后缀,如iostream。

注意:引用头文件时尖括号(c++标准库提供的头文件)和双引号(用户自定义的头文件)的区别

main.cpp

cpp 复制代码
#inlcude <iostream> //系统从环境变量去寻找头文件
#inlcude "myheader.h" //双引号的头文件,系统会在此文件的同级目录中寻找该头文件

输入输出流

iostream :标准库所提供的 IO 接口,用于与用户交互

-- 输入流: cin ;输出流: cout / cerr / clog

-- 输出流的区别: 1. 输出目标; 2. 是否立即刷新缓冲区

-- 缓冲区与缓冲区刷新: std::flush; std::endl

如果程序崩溃,缓冲区中的内容会被回收,为了防止被回收,可以及时刷新缓冲区

std::flush:是一个用于刷新输出流缓冲区的操作符。当调用std::flush时,它会立即将输出流缓冲区中的数据发送到对应的输出设备(如控制台或文件),而不管缓冲区是否已满。

std::endl:它不仅具有刷新缓冲区的功能,还会在输出流中插入一个换行符\n 。

频繁刷新缓冲区主要存在以下缺点:

性能降低:刷新缓冲区会涉及数据的传输和磁盘 I/O 操作(如果输出到文件),频繁进行这些操作会增加系统开销。例如在一个循环中频繁使用std::endl输出数据,每次都刷新缓冲区,相比只在循环结束后刷新,会消耗更多时间在数据传输和 I/O 操作上,导致程序整体运行速度变慢。

资源浪费:频繁的刷新操作意味着频繁地访问输出设备(如显示器、磁盘等),这会加速设备的磨损。对于磁盘这种有机械结构的存储设备,频繁的写入操作会影响其使用寿命。同时,每次刷新都需要系统分配资源来处理数据传输,过多的资源消耗可能会影响其他程序或系统进程的正常运行。

C / C++ 系统 IO 比较

-- printf: 使用直观,但容易出错

-- cout: 不容易出错,但书写冗长

-- C++ 20 格式化库:新的解决方案

相关推荐
m0_720245016 小时前
1543.统计好三元组(简单)
开发语言·算法
叠层归一研究院7 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生7 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
weixin-a153003083168 小时前
python-装饰器
开发语言·python
我的xiaodoujiao8 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
leoZ23110 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino
会周易的程序员11 小时前
aiDgePLC — IEC61131-3 ST PLC 虚拟机调试与运行环境
c++·物联网·虚拟机·st·工业协议·iec61131·梯形图
程序员老陆11 小时前
Qt的QThread::usleep和FFmpeg的libavutil模块的av_usleep哪个精度高一些?
开发语言·qt·ffmpeg·音视频
2601_9638699511 小时前
【计算机毕业设计】基于Java的相框定制系统的设计与实现
java·开发语言·课程设计
名字还没想好☜12 小时前
Go 的 unsafe.Pointer 实战:零拷贝 []byte↔string 转换与三条铁律
开发语言·后端·golang·go·unsafe