从字符串中提取int并插入到c ++ map

时间:2016-07-21 01:01:20

标签: c++ string loops dictionary int

我有几个字符串格式化为234 = 10,10 = 1等

我想让每一行都进入地图,例如 234 = 10应该在map [234] = 10

的地图中

我已经尝试使用for循环遍历字符串char,但我正在努力获得'='之前和之后的2个单独的整数

非常感谢!

2 个答案:

答案 0 :(得分:1)

第一步是找到=

的位置
auto posEqual = str.find("=");

然后,您必须使用substsr

剪切字符串
int key = std::stoi(str.substr(0, pos)); //Takes string from beginning until 'pos'

其他部分几乎相同

int value = std::stoi(str.substr(pos + 1)); //Takes string from 'pos' + 1 until end of str

将它们添加到地图中是微不足道的:

map[key] = value;

答案 1 :(得分:0)

你可以使用std :: strtol返回解析结束的地方(即' =')并跳过它:

auto inp = "12354=43";
char* end_inp;
auto key = std::strtol(inp, &end_inp, 10);
//+1 to skip the '=', don't need to know where parsing stopped (nullptr)
auto value = std::strtol(end_inp + 1, nullptr, 10); 

请注意,这不需要将输入字符串inp转换为字符串(并复制到堆中),这是stxxx函数系列所要求的。