七. 输入和输出
文章参考:
C++支持C的输入、输出结构,同时也建立了一套面向对象的输入、输出结构,且更加安全。其输入/输出通过字节流的形式实现。
1. 输入/输出头文件
iostream
:包含了对输入/输出流进行操作所需的基本信息。其中包含了istream
、ostream
类,并在其中对移位运算符>>
、<<
进行重载,用户可以通过已经头文件中已经创建好的cin
、cout
对象进行读写操作。fstream
:用于用户管理文件的IO操作。strstream
:用于字符串流的IO操作。通过它使用字符串流对象对内存字符串空间进行IO。iomanip
:用于控制输入/输出的格式。头文件汇中创建了setw
、fixed
等对象。
2. 输入/输出流类
类名 | 说明 | 头文件名 |
---|---|---|
ios | 抽象流基类 | iostream |
通用输入流类和其它输入流类 | istream | iostream |
输入文件流类 | ifstream | fstream |
输入字符串流类 | istrstream | strstream |
通用输出流类和其它输出流类 | istream | iostream |
输出文件流类 | ofstream | fstream |
输出字符串流类 | ostrstream | strstream |
通用输入输出流类和其它输入/输出流类的基类 | iostream | iostream |
输入/输出文件流类 | fstream | fstream |
输入/输出字符串流类 | strstream | strstream |
3. 输入/输出预定义对象
在C++提供的输入/输出流库中,有一些预定的流对象,用于流操作。
EG:
- 标准输入流对象:
cin
- 标准输出流对象:
cout
- 非缓冲型的标准出错流对象:
cerr
- 缓冲型标准出错流对象:
clog
4. 常用的输入/输出流成员函数
在使用istream
、ostream
的对象时,常使用到相关成员函数:
-
put()
:用于输出cout/put(单字符/字符型变量/ASCII码);
-
get()
:用于输入。它可以用来接收空白符,而>>
运算符默认无法接收空白符。cin.get(字符型变量);
-
getline()
:用于输入,可以使用数组或指针cin.getline(字符数组, 字符个数, 终止标志字符); cin.getline(字符指针, 字符个数, 终止标志字符);
-
ignore()
:用于输入。作用是跳过输入流中n个字符(默认是1个),在遇到指定的终止符时(默认是EOF)提前结束。cin.ignore(n,终止字符);
5. 输入/输出格式化
C++中,依旧可以使用printf()
和scanf()
函数对输入/输出进行格式化,并在此基础上提供了两种新的格式控制方式:
- 使用
ios
类中有关格式控制的流成员函数进行格式控制。 - 使用称为操作符的特殊类型的函数进行格式控制。
此处省略常用函数。
6. 文件操作
6.1 操作步骤
对文件继续读写的步骤如下:
- 建立流文件。
- 打开目标文件,没有就新建一个。
- 进行读/写操作。
- 关闭流文件。
文件流类:
类名 | 说明 | 功能 |
---|---|---|
istream |
输入文件流类 | 用于文件的输入 |
ofstream |
输出文件流类 | 用于文件的输出 |
fstream |
输入/输出文件流类 | 用于文件的输入/输出 |
6.2 打开/关闭流文件
打开文件:有两种方式:
-
三种文件流类的构造函数都会自动打开文件。
-
使用成员函数
opean()
打开文件,函数原型如下:void open(char const *,int filemode,int =filebuf::openprot);
-
第一个是要打开的文件迷宫
-
第二个是文件打开方式,可以取以下值:
-
第三个是文件保护方式,一般使用默认值。
-
关闭文件:使用close()
成员函数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现