txt 中的内容如下:
读取函数如下:
#include <iostream>
#include <sstream>
#include<fstream>
#include<map>
#include<string>
#include<vector>
void txt2map(std::string txt_path, std::map<int, std::string> &str_map);
int main(int argc,char* argv[])
{
std::string txt_path = "/mnt/ssd/test.txt";
std::map<int, std::string> str_map;
txt2map(txt_path,str_map);
std::cout<<"str_map size: "<<str_map.size()<<std::endl;
std::map<int, std::string>::iterator iter;
for (iter = str_map.begin();iter!= str_map.end();iter++)
{
std::cout<<iter->first<<" "<<iter->second<<std::endl;
}
}
void txt2map(std::string txt_path, std::map<int, std::string> &str_map)
{
std::ifstream file(txt_path);
std::string line;
std::string str_value;
int key;
int cnum = 0;
if (file)
{
while (getline(file, line))
{
std::istringstream is(line);
int snum = 0;
while (!is.eof())
{
if (snum == 0)
{
is >> key;
}
else
{
is>>str_value;
}
snum = snum + 1;
}
str_map[key] = str_value;
}
}
else
{
std::cout << "no such file" << std::endl;
}
}
输出结果如下: