假如有一个文件,列出了一些人和他们的电话号码。某些人只有一个号码,而另外一些人则有多个——家庭电话、工作电话、移动电话等。我们的输入文件看起来是这样的:
morgan 2015552368 8625550123
drew 9735550130
lee 6095550132 2015550175 8005550000
文件中每条记录都以一个人名开始,后面跟随一个或多个电话号码。
程序如下:
#include<iostream>
#include<string>
#include<vector>
#include<sstream>
using namespace std; struct PersonInfo
{
string name;
vector<string> phones;
}; int main()
{
string line,word;
vector<PersonInfo> people; while(getline(cin,line))
{
PersonInfo info;
istringstream record;
record.str(line);
record>>info.name;
while (record>>word)
info.phones.push_back(word);
people.push_back(info);
}
for(auto v:people)
{
cout<<v.name<<endl;
for(auto i:v.phones)
cout<<i<<" ";
cout<<endl;
}
return ;
}
运行结果如下:
如果将其中while循环中定义的istringstream对象移到循环的外面,则运行结果如下: