提升正则表达式 - 搜索结果的空终止

时间:2010-01-26 18:29:22

标签: c++ boost-regex

  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的工作原理?

1 个答案:

答案 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对象。