64,682
社区成员
发帖
与我相关
我的任务
分享
std::list<std::string> split(const std::string& str,const std::string& pattern)
{
std::string::size_type pos;
std::list<std::string> result;
std::string newstr = str + pattern;//扩展字符串以方便操作
int size = newstr.size();
for(int i = 0; i < size; i++)
{
pos = newstr.find(pattern, i);
if(pos < size)
{
std::string s = newstr.substr(i, pos - i);
result.push_back(s);
i = pos + pattern.size() - 1;
}
}
return result;
}
std::fstream ifin;
ifin.open(filename, std::ios::in | std::ios::binary);
std::map<std::string, std::list<std::string>> result;
std::string line;
if(ifin)
{
while(std::getline(ifin, line))
{
//文件第一项为 key,从第二项开始为value,按 "|" 分割
auto list = split(line, "|");
std::string key = (*list.begin());
list.erase(list.begin());
result[key] = list;
}
}
else
{
log4cxx::log_error(filename + "打开失败");
}