当前位置: 首页 > news >正文

<iostream>

#include <iostream>

cin:

>> 运算符会根据变量类型自动解析,但它会跳过空格、制表符和换行符

如果你在读取包含空格的字符串,不用 cin >> str; 可以用 getline(cin,str);

cout:

自带缓冲的

意味着为了效率,系统可能不会立即把输出内容打印到屏幕上,而是等缓冲区满了或者是遇到了 endl / flush 时才一次性输出打印

cerr:

没有缓冲区

程序崩溃时, cerr 中的内容通常也能立即显示在屏幕上

在调试和报告严重故障时可以优先考虑使用

clog:

带缓冲区

适合记录大量运行信息

因为缓冲,性能比 cerr 高,但不能保证程序异常退出时能够立刻看见最后几条日志

总结:

普通输出:用 cout

报错信息:用 cerr(因为它最快显示,不排队)

打日志:用 clog

补充:

在默认情况下,cin 和 cout 是绑定( tie )在一起的

意味着每次执行 cin 之前,程序都会自动刷新 cout 的缓冲区,确保在输入前能看到提示语

因此:

ios::sync_with_stdio(false); cin.tie(nullptr);

上述这两行代码作用:在做算法竞赛或处理大量数据时,可以使用以下代码加速

第一行:取消与 Cstdio 的同步

第二行:解除 cin 和 cout 的绑定

endl 和 \n:

两者在 C++ 中都能表示换行,但也有区别:

endl 输出换行并强制刷新缓冲区

\n 仅输出换行,不触发刷新

因此:在频繁输出换行时,尽量用 \n ,这样能够减少刷新时间,否则会极大降低程序运行速度

getline()

cin.getline(char* buffer,streamsize count, char delim); //buffer: 指向字符数组的指针(即你要把数据存到哪) //count: 读取的最大字符数(包括最后的空字符 \0) //delim (可选): 停止读取的分隔符,默认为 \n

注意:

固定长度,超过长度会报错/截断

如果输入长度 >size,会触发错误状态位:(了解即可)

比如 遇到 \n :流状态如果一切正常的话, cin.good() 为真,这样就可以继续读取下一行

到达文件末尾 EOF :流状态会设置为 eofbit

当在循环里写 while(getline(cin,str)),因为流已经认为 没东西可以读取了,于是此时循环会终止

储存空间耗尽的时候 :流状态会设置为 failbit,

注意:如果 failbit 响应的话,除非调用 cin.clear(),否则在后面的所有的输入操作(包括 cin >> 或者是 另外一个 getline )都会直接跳过,不会执行

EG:

#include <iostream> using namespace std; int main() { char name[20]; cout << "请输入你的名字: "; // 最多读取 19 个字符,留下 1 个位置给结束符 '\0' cin.getline(name, 20); cout << "你好, " << name << endl; return 0; }
http://www.jsqmd.com/news/695874/

相关文章:

  • AI Agent开发者薪资倒挂现象:应届生比老员工高
  • 别再滥用Dynamic NavMesh了!UE4/UE5导航系统性能对比与正确配置指南
  • 告别手动测试:如何用CANoe的LIN一致性测试模块自动化你的ECU验证流程?
  • 2024年Mathorcup数学建模C题:从思路解析到代码实现的完整攻关指南
  • 基于多模态大模型的桌面自动化工具autoMate实战指南
  • 量子相位估计与Suzuki-Trotter分解在量子计算中的应用
  • 机器学习初学者必备工具链与实战指南
  • AI Agent开发者薪资天花板:年薪百万是什么水平
  • 如何让Windows和Office永远告别激活烦恼?KMS智能激活方案全解析
  • Python 进阶
  • Service Mesh(服务网格)介绍(将服务间通信复杂逻辑从业务代码中剥离,交由独立基础设施处理)Sidecar Proxy、数据平面、控制平面、Envoy、Istio、Linkerd
  • Meta计划5月裁员约10%,约8000人受影响,此前AI领域投资巨大
  • 学Simulink——基于Simulink的固态变压器(SST)多级协同控制​
  • 别再手动算了!用Matlab的dec2hex/dec2bin函数搞定进制转换(附硬件寄存器操作实例)
  • 第四章-10-变量作用域
  • 海康威视访客系统API避坑指南:从权限下发失败到动态二维码生成的5个常见问题
  • Web安全深度解析:文件上传漏洞的原理、攻击与防御
  • 并查集
  • YOLOv8改进 | Neck篇 | CVPR最新低照度图像增强模块HVI改进YOLOv8(有效涨点)
  • 13+Spring Native与GraalVM原生编译
  • ARM智能卡接口(SCI)架构与通信协议详解
  • 10款论文降AI工具实测:SpeedAI 100%AI率瞬清零,语义保留99%
  • 小升初英语衔接轻创业,KISSABC 落地全拆解
  • AI代理生产化部署:架构设计与性能优化实战
  • 【nnUNetv2实战】从零到一:构建端到端医学图像分割流水线
  • 微软预热 Discord 与 Xbox Game Pass 合作,新“入门版”含 50 多款游戏及云游戏服务
  • 浏览器里就能用的3D模型查看器:零门槛打开20+格式的3D文件
  • 边缘节点的PHP应用部署、数据同步、算力调度标准化方案=hyperf最
  • 【大数据存储与管理】NoSQL数据库:04 NoSQL数据库的四大类型
  • ngx_epoll_add_event