Ich habe eine breite Zeichenfolge (Std :: wstring) in meinem Code, und ich muss breite Zeichen darin suchen.wstring :: find() funktioniert nicht mit nicht-lateinischen Symbolen?
ich find() Funktion für sie:
wcin >> str;
wcout << ((str.find(L'ф') != wstring::npos)? L"EXIST":L"NONE");
L'ф'
ein kyrillischer Buchstabe ist.
Aber find() in demselben Anruf gibt immer npos
zurück. In einem Fall mit lateinischen Buchstaben funktioniert find() korrekt.
Es ist ein Problem dieser Funktion? Oder mache ich etwas falsch?
UPD
ich MinGW verwenden und Quelle in UTF-8 speichern. Ich setze auch Locale mit setlocale(LC_ALL, "");
. Code same wcout << L'ф';
funktioniert coorectly. aber gleich
wchar_t w;
wcin >> w;
wcout << w;
funktioniert nicht korrekt.
Es ist seltsam. Zuvor hatte ich keine Probleme mit der Codierung, mit setlocale().
Ich nehme dies nicht richtig durchgeführt werden kann direkt und diese Funktion wird nützlich sein: http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx – BlackCat
Warum? 'basic_string :: find()' arbeitet mit charT, das ist für einen Fall eines wstring - mit einem wcahr_t. 'L'ф 'ist ein wchar_t, oder? –