- ベストアンサー
boost::regexで、日本語に利用ついて
boost_1_47を利用して、置換を行おうとしているのですが、「VIII」を置換しようとするとエラーになります。たぶん「5B」が入っているからかと思うのですが、どのように対処したらよいのでしょうか? #include <boost/regex.hpp> using namespace std; using namespace boost; const boost::regex str("VIII"); よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
UNICODE(wide文字)版使う。 // VC++ 2010 で動作確認済 #include <boost/regex.hpp> #include <iostream> #include <string> #include <locale> #include <exception> using namespace std; using namespace boost; int main() { try { const wregex re(L"VIII"); wstring source = L"ヘンリーVIII世と6人の妻"; wstring fmt = L"8"; wstring result = regex_replace(source, re, fmt); wcout.imbue(locale("japanese")); wcout << result << endl; } catch ( std::exception& e) { cout << e.what() << endl; } }
お礼
ありがとうございました。 解決しました。 動作確認までしていただいて、助かりました。