0
  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”。这是空终止的问题,还是只是误解了 regex_search 的工作原理?

4

1 回答 1

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().

于 2010-01-26T18:47:05.757 回答