C++Primer第五版 8.3.2节练习

练习8.13:重写本节的电话号码程序,从一个命名文件而非cin读取数据?
答: 见练习8.13.cpp

练习8.14:我们为什么将entry和nums定义为const auto&?
答:entry与nums分别与people和people.phones相对应,是它们引用。而entry和nums虽然参与运算,但不能被拷贝以及赋值(保证原有输入的数据不变),因此是const auto&.

练习8.13

/*
*练习8.13
*日期:2015/7/23
*问题描述:练习8.13:重写本节的电话号码程序,从一个命名文件而非cin读取数据?
*说明:继续做 
*作者:Nick Feng 
*邮箱:nickgreen23@163.com 
*/


#include <iostream> 
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

struct PersonInfo{
    string name;
    vector<string> phones;
};

int main()
{
    string line, word;
    vector<PersonInfo> people;
    ifstream in("person_data.txt"); 
    ofstream out("person_data_save2.txt"); 

    while(getline(in,line))
    {
        PersonInfo info;
        istringstream record(line);
        record >> info.name;
        out << info.name << " "; //测试用 
        cout << info.name << endl;
        while(record >> word)
        {
            info.phones.push_back(word);
            out << word << " ";//测试用 
            cout << word << endl;
        }
        out << endl;
        people.push_back(info);
    }

 } 
person_data.txt
Nick 123456 324321
Tom 23456 212111
Jack 123 456
Marry 231
person_save_data2.txt
Nick 123456 324321 
Tom 23456 212111 
Jack 123 456 
Marry 231 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值