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

C++学习之IO流(输入输出流)详解

介绍

流: 若干字节数据从一端到另一端我们叫做流

例如:操作文件,从程序到文件,数据的流动的操作称为流操作

流类体系

专门处理输入输出流、字符流、文件流,包含有:

  • 流对象
  • 流运算符 >> <<

输入/出流对象 + 流运算符 >> <<---处理输入输出的数据

字符流对象 + 流运算符 >> << ---处理字符流

文件的对象 + 流运算符 >> << ---读写文件

基本输入、输出流

istream 类---cin 输入

ostream类---cout 输出

tip:输出流除了cout外,还有一些别的对象(效果和cout一样)

  • cerr ---标准出错
  • clog ---日志文件输出

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

usingnamespacestd;

voidtestostream()//output

{

//freopen()

cout <<"标准输出"<< endl;//cin/cout都可以重定向

cerr <<"标准错误输出"<< endl;//不能重定向 当觉得程序可能出错时用cerr输出,标识作用

clog <<"日志文件输出"<< endl;//可以重定向为文件

}

intmain(){

testostream();

}

/*输出*/

/*标准输出

标准错误输出

日志文件输出*/

freopen

把程序的输入、输出重定向为文件

重定向是文件中的数据的格式要与程序读取的格式一致

输入重定向

1

2

3

4

5

6

7

8

9

10

11

12

13

#include<cstdio>

#include<iostream>

intmain(){

freopen("1.txt","r",stdin);//参数:文件名 读写方式 流

inta,b;

scanf("%d%d",&a,&b);//把基本输入定向为文件,程序所有的输入由文件完成

std::cout<<a+b;

}

/*输出*/

/* 在黑窗口输出3 */

输出重定向

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#include<cstdio>

#include<iostream>

intmain(){

freopen("1.txt","r",stdin);//参数:文件名 读写方式 流

inta,b;

scanf("%d%d",&a,&b);//把基本输入定向为文件,程序所有的输入由文件完成

std::cout<<a+b;

freopen("2.text","w",stdout);

printf("%d",a+b);

}

/*输出*/

/* 在2.txt中输出3 */

字符类的处理

  • 正常的操作
  • 通过IO流对象调用成员函数的方式

单个字符和字符串的输出处理

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

//调用成员函数的方式传常量、变量都可以

voidtestostream()

{

//单个字符的输出

cout.put('a');//传常量 通过IO流对象调用成员函数的方式

cout <<'a'<< endl;//正常的输出方式

charc ='C';

cout.put(c);//传变量

cout << c << endl;

//多个字符/字符串的输出

cout.write("ILoveyou",4);/*直接写入输出 后面的参数:指定长度,超过长度的部分不做输

出截取输出没有'\0',只截取了前面4位*/

}

intmain(){

testostream();

}

/*输出*/

/*aa

CC

ILov*/

单个字符和字符串的输入处理

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

voidtestostream()

{

//单个字符的输入

/* char c;

c=cin.get();

cout.put(c); 用中间变量接收返回值,再做输出*/

cout.put(cin.get());//要处理回车

cout << endl;

//多个字符/字符串的输入

cout <<"字符串的处理"<<endl;

while(cin.get() !='\n');

//while(getchar()!='\n');

charstr[20] ="";//准备一个字符串 注意不是返回值不能一步到位

cin.getline(str, 20);//输入函数

cout.write(str, 20);//输出函数 相对于流操作更安全,可以指定长度,同样需要清空缓冲区处理

}

intmain() {

testostream();

}

/*输出*/

/*a

a

字符串的处理

hello

hello*/

复制讲解

注意不能用来处理string

1

2

string text;

cin.getline(text,20);//报错,不能处理string,只能处理char*

格式控制字符

包含头文件 <iomanip>

常用的格式控制,一种是调用成员函数方式,一种流控制字符去做

  • 设置有效位数: setprecision(n)
  • 设置精度: fixed 结合 setprecision 使用

tip:流控制字符---c++用来控制格式的操作

http://www.jsqmd.com/news/704999/

相关文章:

  • Elasticsearch 客户端连接与节点选择机制深度解析:从 TransportClient 到高级负载均衡
  • LocalAGI:本地化AI智能体平台部署与实战指南
  • github项目clone太慢代理设置
  • 码蹄杯2026游记——黎明前的黑暗前的黎明
  • 2026京东E卡正规回收平台排行榜:闲置电购物卡回收处理实测推荐 - 鼎鼎收礼品卡回收
  • 如何免费解锁加密音乐:Unlock-Music完整使用指南与解密方案
  • 实战指南:如何用Sunshine打造跨平台游戏串流系统:5步实现家庭游戏自由
  • 基于PPO与ViZDoom的深度强化学习实战:从像素输入到智能决策
  • 2026沃尔玛购物卡回收渠道排行榜:闲置变现实测,鼎鼎收综合第一 - 鼎鼎收礼品卡回收
  • Claude Code 的结构性转变:Prompt 给出输出,系统带来一致性
  • 【深度解析】Qwen 3.6 Max Preview:面向智能体编码、视觉推理与 Three.js 前端生成的能力拆解
  • Poor Man‘s T-SQL Formatter:企业级SQL代码规范化架构解决方案
  • 华硕笔记本优化工具G-Helper:10个实用技巧提升系统性能管理效率
  • AGPLv3§7¶4 赋予用户抵制“徽章软件”权力,Onlyoffice 自相矛盾许可证引争议
  • 西安小程序开发公司严选推荐:2026年十家西安小程序定制设计制作公司口碑信赖选择 - 新闻快传
  • 正规京东E卡回收平台排行榜:2026购物卡闲置处理安全指南 - 鼎鼎收礼品卡回收
  • PPTX转HTML终极指南:3分钟学会将PPTX转换为交互式网页
  • C#中Thread.Sleep(1)为啥不准?实测15ms背后的Windows时钟精度问题与timeBeginPeriod解法
  • 终极指南:如何用Turbo Intruder快速进行大规模HTTP压力测试 [特殊字符]
  • 闲置京东E卡怎么回收处理?2026用户亲测方式排行榜,鼎鼎收登顶! - 鼎鼎收礼品卡回收
  • 【深度解析】DeepSeek V4 Pro/Flash:百万 Token 上下文、MoE 架构与 OpenAI 兼容 API 实战
  • 1:1 会议的结构性翻转:把所有权交给下属,让 LLM 瞬间升级为你的 Chief of Staff
  • 本地部署AI全栈开发平台December:开源、私有化、可控的代码生成利器
  • 20252908 2025-2026-2 《网络攻防实践》实践6报告
  • 青岛婚纱照哪家好?2026青岛婚纱摄影口碑推荐,含海景、旅拍、韩式中式纪实风,小众外景室内婚纱照优选指南 - 海棠依旧大
  • 【深度解析】DeepSeek V4:百万 Token 上下文、MoE 架构与低成本 Agent 工程实践
  • 2026年4月最新:深圳靠谱的回收工厂呆滞料企业推荐
  • 开源笔记应用yn:基于Markdown的沉浸式写作与知识管理方案
  • GPU显存健康检测:memtest_vulkan帮你轻松诊断显卡稳定性问题
  • BetterNCM Installer:让网易云音乐焕发新生的智能插件管家