我必须从 C++ 中的字符串中提取多个值。我可以在 python 中很好地做到这一点,但对我来说不幸的是,这必须在 c++ 中完成。
例如,如果我将下面的字符串包含在“blah”中,我该如何对其运行多重提取正则表达式并将每个数值传递到数组中。我对正则表达式很好,而不是 C++ 语法。
std::string 等等 = "5001 | 5002 | 5003";
谢谢
我必须从 C++ 中的字符串中提取多个值。我可以在 python 中很好地做到这一点,但对我来说不幸的是,这必须在 c++ 中完成。
例如,如果我将下面的字符串包含在“blah”中,我该如何对其运行多重提取正则表达式并将每个数值传递到数组中。我对正则表达式很好,而不是 C++ 语法。
std::string 等等 = "5001 | 5002 | 5003";
谢谢
从 C++11 开始,正则表达式是 C++ 标准库的一部分。或者,您可以使用boost-regex。除了命名空间之外,API 几乎相同。你可以这样:
auto blah = std::string{"5001 | 5002 | 5003"};
auto values = std::vector<std::string>{
std::sregex_token_iterator{blah.begin(), blah.end(), std::regex{R"(\d+)"}},
std::sregex_token_iterator{}};
如果您需要int
代替std::string
,请使用std::stoi
将字符串转换为整数。