primer C++ 答案(第 8 章)

第 8 章 IO 库

所有代码均可以到我的 Gitee 代码库中下载:Primer-CPP-Answers

练习 8.1:头文件 | 源文件

编写函数,接受一个 istream & 参数,返回值类型也是 istream &。此函数必须从给定的数据流种读取,直至遇到文件结束时停止。它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。

练习 8.2:测试文件

测试函数,调用参数为 cin。

练习 8.3:

什么情况下,下面的 while 循环会终止?

while (cin >> i) /* ... */

当使 cin 处于错误状态时会导致循环终止,总的来说就是 eofbit, failbitbadbit。输入 ctrl + D 会导致 eofbit 置位,当输入类型和数据类型不一致时会导致 failbit 置位,至于如何导致 badbit 被置位书上没说。

练习 8.4:头文件 | 源文件

编写函数,以读模式打开一个文件,将其内容读到一个 string 的 vector 中,将每一行作为一个独立的元素存于 vector 中。

练习 8.5:头文件 | 源文件

重写上面的程序,将每个单词作为一个独立的元素进行存储。

练习 8.6:源文件

重写 7.1.1 节的书店程序(第 229 页),从一个文件中读取交易记录。将文件名作为一个参数传递给 main(参见 6.2.5 节,第 196 页)。

练习 8.7:源文件

修改上一题的书店程序,将结果保存到一个文件中。将输出文件名作为第二个参数传递给 main 函数。

练习 8.8:源文件

修改上一题的程序,将结果追加到给定的文件末尾。对同一个输出文件,运行程序至少两次,检验数据是否得以保留。

练习 8.9:源文件

使用你为 8.1.2 节(第 281 页)第一个练习所编写的函数打印一个 istringstream 的内容。

练习 8.10:源文件

编写程序,将一个来自文件中的行保存到一个 vector 中。然后使用一个 istringstream 从 vector 中读取数据元素,每次读取一个单词。

练习 8.11:源文件

本节的程序在外层 while 循环中定义了 istringstream 对象。如果 record 对象定义在循环之外,你需要对程序进行怎样的修改?重写程序,将 record 的定义移到 while 循环之外,验证你设想的修改方法是否正确。

练习 8.12:

我们为什么没有在 PersonInfo 中使用类内初始化?

github 上面的答案:因为这里需要使用聚合类。所以不能有类内初始化器。

至于为什么这里需要聚合类?不太理解。

练习 8.13:源文件

重写本节的电话号码程序,从一个命名文件而非 cin 读取数据。

练习 8.14:

我们为什么将 entry 和 nums 定义为 const auto &?

使用引用类型 & 是为了避免拷贝,使用 const 是因为输出操作不需要改变原始对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值