如何从格式为"a:b"的字符串数组中填充C++对的向量?

Ale*_*exM 0 c++ arrays vector

如何从字符串数组中填写C++对的向量,其字符串具有以下格式:"a:b","c:d","e:f"例如:string a [] = {"6: 7" , "3:5", "5:2"}; 将它转换为vector>并且对内容是从6到7,然后是3和5 ......

我没有成功使用boost :: lexical_cast,也没有使用strtol,也许使用正则表达式?还有其他想法吗?

谢谢

Jer*_*fin 8

最简单的方法可能是使用字符串流来处理转换:

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)