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 格式化库:新的解决方案

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK2 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境2 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境2 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴3 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境5 天前
C++ 的Eigen 库全解析
c++
卷无止境5 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴5 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18007 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴7 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake