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

相关推荐
小坏坏的大世界1 小时前
C++ STL常用容器总结(vector, deque, list, map, set)
c++·算法
wjs20242 小时前
状态模式(State Pattern)
开发语言
我命由我123452 小时前
Kotlin 数据容器 - List(List 概述、创建 List、List 核心特性、List 元素访问、List 遍历)
java·开发语言·jvm·windows·java-ee·kotlin·list
liulilittle2 小时前
C++ TAP(基于任务的异步编程模式)
服务器·开发语言·网络·c++·分布式·任务·tap
励志要当大牛的小白菜4 小时前
ART配对软件使用
开发语言·c++·qt·算法
PAK向日葵5 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
爱装代码的小瓶子6 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
Maybe_ch7 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨8 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
终焉暴龙王8 小时前
CTFHub web进阶 php Bypass disable_function通关攻略
开发语言·安全·web安全·php