我有几个字符串格式化为234 = 10,10 = 1等
我想让每一行都进入地图,例如 234 = 10应该在map [234] = 10
的地图中我已经尝试使用for循环遍历字符串char,但我正在努力获得'='之前和之后的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函数系列所要求的。