2010-05-13 2 views
1

Это мой код:Как использовать replace_regex_copy() из boost :: library library?

#include <string> 
#include <boost/algorithm/string/regex.hpp> 
string f(const string& s) { 
     using namespace boost::algorithm; 
     return replace_regex_copy(s, "\\w", "?"); 
} 

Это то, что говорит составитель:

no matching function for call to ‘replace_regex_copy(const 
std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&, std::string, std::string) 

Ссылка на библиотеку: http://www.boost.org/doc/libs/1_43_0/doc/html/boost/algorithm/replace_regex_copy.html

Может кто-нибудь, пожалуйста, помогите? Благодаря!

пс. Библиотека Boost на месте, поскольку другие функции от нее работают нормально.

ответ

3

replace_regex_copy принимает второй аргумент boost::regex, а не std::string.

Существует явное преобразование из std::string в boost::regex, но не неявное преобразование не существует, так что вы можете исправить свой код, изменяя его к ...

string f(const string& s) { 
     using namespace boost::algorithm; 
     return replace_regex_copy(s, boost::regex("\\w"), "?"); 
} 
+0

Большое спасибо! – yegor256