第八章 8.3.2节练习

来源:互联网 发布:js 前后端数据 交互 编辑:程序博客网 时间:2024/06/06 09:54

题目:

练习8.13:

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

个人解答:

函数实现:

istream& func(istream& in) {vector<string> in_buf;string tmp, word;istringstream words;while (getline(in, tmp)){words.str(tmp);while (words >> word)in_buf.push_back(word);words.clear();}for (auto i : in_buf){cout << i << " ";}cout << endl;in.clear();return in;}
main函数:

int main() {        string file_path("zhidao.h"); // 这里有个名字为zhidao.h的文件ifstream input_file(file_path);        func(input_file);                return 0;}

这样就完成了对cin的替换。其实这个替换并不困难,认真看了本章的第一节就能完成。


练习8.14:

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

个人解答:

应该是处于对这些对象的保护。因为在格式化的过程中,需要用到他们。

且在C++中建议,尽量用引用,这样不用开辟新的内存空间。

但又不希望,这些值在格式化中变动。

这样定义的话,当函数对原始值进行操作的时候,程序会报错,来对程序员进行提醒。

0 0