您的位置:首页 > 其它

第八章 8.3.2节练习

2014-08-19 01:20 141 查看
题目:

练习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++中建议,尽量用引用,这样不用开辟新的内存空间。

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

这样定义的话,当函数对原始值进行操作的时候,程序会报错,来对程序员进行提醒。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: