从文件中读取通信录信息,将每条信息加载到istringstream流中进行处理,将所有信息读入内存保存在vector中,使用结构体容器保存每一条信息并打印出每一条信息。
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
struct PersonInfo{
string name;
vector<string> phones;
}; // 用来保存读取数据的结构体
int main()
{
vector<PersonInfo> result; // 结构体容器保存读取结果
ifstream data;
data.open(R"(C:\Users\zty19\Desktop\cpp\clion\file.txt)");
if (data){
cout << "目录打开成功!" << endl;
string temp, phones; // temp为按行读取后通信录的一条信息,phones为保存读取电话的临时变量
//按行读取,遇到换行结束一次读取,从文件输入流data中读取数据保存到string对象中
while (getline(data, temp)){
istringstream process(temp); // 创建一个sstream类对象,将temp的信息加载到流中进行处理
PersonInfo client_inf;
process >> client_inf.name;
while (process >> phones)
client_inf.phones.push_back(phones);
result.push_back(client_inf);
}
cout << "录入结束!" << endl;
} else
cerr << "目录打开失败!" << endl;
//打印录入信息
for(const auto &i : result)
{
cout << i.name << endl;
for (const auto &j : i.phones)
cout << j << " ";
cout << endl;
}
return 0;
}