Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

11.3.2 二进制文件

在内存中,我们可以将整数123表示为一个整型值或者一个字符串值,如下所示:

在第一条语句中,123保存为一个(二进制)数,与所有其他整型值占用相同大小的内存空间(在PC上是4字节,32位)。即便我们处理数值12345,仍然占用4个字节。在第二条语句中,123保存为一个3个字符的字符串。如果我们处理的是12345,则保存为字符串"12345"需占用5个字符(还需要加上管理字符串所需的固定开销)。这种差异如下图所示(可以看到,使用普通的十进制和字符表示方式,不如使用在计算机内部采用的二进制表示方式):

当我们使用字符表示方式时,必须使用特定字符表示数值的结束,就像我们在纸上书写数值一样:123456是一个数,而123456是两个数。在纸上书写,我们使用空格来表示数值的结束。在计算机内存中,我们也可以这么做:

固定长度的二进制表示方式(比如int型值)和变长的字符串表示方式(比如string类型)之间的差别在文件中也有体现。默认情况下,iostream使用字符表示方式。也就是说,istream从文件读取字符序列,并将其转换为所需类型的对象。而ostream将指定类型的对象转换为字符序列,然后写入文件。但是,我们可以令istream和ostream将对象在内存中对应的字节序列简单地复制到文件。这称为二进制I/O,通过在打开文件时指定ios_base::binary模式来实现。下面的例子展示了如何读写二进制整数文件,涉及“二进制”处理的代码后面给出详细解释: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252