我有一个包含如下数据的 vector :
std::vector<std::string> v;
v[0] = "first:tom";
v[1] = "last:jones";
我想遍历 vector 并在 :
处解析并将结果放入 std::map
std::vector<std::string> v;
std::map<std::string, std::string> m;
std::pair<std::string, std::string> p;
for(int i = 0; i < v.size(); i++)
{
std::cout << v[i] << std::endl;
std::istringstream oss(v[i]);
std::string token;
while(getline(oss, token, ':'))
{
m.insert(std::pair<std::string, std::string>("", ""));
}
}
我一直坚持插入 std::map
,因为我看不到解析如何为我提供可以插入到 map 中的两个部分。
两者都不是 v[i]。
我要:
m.insert(std::pair<std::string, std::string>("first", "tom"));
m.insert(std::pair<std::string, std::string>("last", "jones"));
谁能解释一下我的困难?
最佳答案
尝试
std::vector<std::string> v;
std::map<std::string, std::string> m;
for(int i = 0; i < v.size(); i++)
{
std::cout << v[i] << std::endl;
size_t sepPosition = v[i].find (':');
//error handling
std::string tokenA = v[i].substr(0, sepPosition);
std::string tokenB = v[i].substr(sepPosition + 1)
m.insert(std::pair<std::string, std::string>(std::move(tokenA), std::move(tokenB)));
}
关于c++ - 使用 istringstream 将 std::string 标记化为 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822879/