コードにワイド文字列 (std::wstring) があり、ワイド文字を検索する必要があります。
そのために find() 関数を使用します。
wcin >> str;
wcout << ((str.find(L'ф') != wstring::npos)? L"EXIST":L"NONE");
L'ф'
キリル文字です。
しかし、同じ呼び出しで find() は常に を返しますnpos
。ラテン文字の場合、 find() は正しく機能します。
この機能の問題でしょうか?または、私は何かを間違っていますか?
UPD
MinGW を使用し、ソースを UTF-8 で保存します。でロケールも設定しましsetlocale(LC_ALL, "");
た。コードは同じようwcout << L'ф';
に動作します。でも同じ
wchar_t w;
wcin >> w;
wcout << w;
正しく動作しません。
変です。以前は、setlocale () を使用してエンコーディングに問題はありませんでした。