0

私のIDEはVS 2012で、C++ 0xを使用しています。中国語の文字列を処理して、単語が特殊な記号で分割されている場合でも、単語を別の単語に置き換えたいと考えています。キーボード上のすべての特殊記号を列挙しましたが、うまく機能します。コードは次のようになります。

std::wstring ws_str = L"性 \t\r\n`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?爱";
std::wregex wrx(L"性[\\s`~!@#$%^&*()-_=+\\[\\{\\]\\}\\|;:'\",<.>/?]*爱");
std::wstring wfmt(L"革命");
std::locale::global(std::locale("chs"));
std::wstring ws_res = std::regex_replace(ws_str, wrx, wfmt);

しかし、上記のコードには弱点があります。キーボード上にないすべての記号を列挙することはできません。目標を達成できる他の方法はありますか?

4

1 に答える 1

0

性(\W|_)*爱は私の問題を解決できます。\W はすべての文字 (中国語または他の言語を含む) を除外し、記号 ' _' に下線を引くことを意味するため、' ' を追加_して要件を満たします。

于 2013-01-04T08:54:06.350 に答える