如何从字符串数组中填写C++对的向量,其字符串具有以下格式:"a:b","c:d","e:f"例如:string a [] = {"6: 7" , "3:5", "5:2"}; 将它转换为vector>并且对内容是从6到7,然后是3和5 ......
我没有成功使用boost :: lexical_cast,也没有使用strtol,也许使用正则表达式?还有其他想法吗?
谢谢
最简单的方法可能是使用字符串流来处理转换:
std::pair<int, int> cvt(std::string const &in) {
std::stringstream buff(in);
std::pair<int, int> ret;
buff >> ret.first >> std::ignore(1) >> ret.second;
return ret;
}
Run Code Online (Sandbox Code Playgroud)
如果您的输入可能不是数字,您可以很容易地将它们保存为字符串,例如:
std::pair<std::string, std::string> cvt(std::string const &in) {
std::stringstream buff(in);
std::pair<std::string, std::string> ret;
std::getline(buff, ret.first, ':');
std::getline(buff, ret.second);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其应用于整个输入数组std::transform:
std::vector<std::pair<int, int> > pairs; // or std::pair<std::string, std::string>
std::transform(std::begin(a), std::end(a), std::back_inserter(pairs), cvt);
Run Code Online (Sandbox Code Playgroud)