boost::regex re;
re = "(\\d+)";
boost::cmatch matches;
if (boost::regex_search("hello 123 world", matches, re))
{
printf("Found %s\n", matches[1]);
}
结果:“找到123世界”。我只想要“123”。这是null终止的问题,还是误解了regex_search的工作原理?
答案 0 :(得分:2)
您无法将matches[1]
(sub_match<T>
类型的对象)传递给printf。事实上它提供了任何有用的结果是你不能指望的事情,因为printf需要一个char指针。而是使用:
cout << "Found " << matches[1] << endl;
或者如果你想使用printf:
printf("Found %s\n", matches[1].str().c_str());
您可以使用matches[1].str()
获取结果的std :: string对象。