Если строки, которые вы хотите сравнить, уже находятся в определенной, определенной кодировке, то не используйте wchar_t
и не используйте L""
литералы - это не для Unicode, а для определенной реализацией , непрозрачные кодировки только .
Если ваши строки в формате UTF-8, используйте строку char
s. Если вы хотите преобразовать их в необработанные кодовые точки Unicode (UCS-4 / UTF-32) или если они уже есть в этой форме, сохраните их в строке uint32_t
с или char32_t
с, если у вас есть современный компилятор.
Если у вас есть C ++ 11, ваш литерал может быть char str8[] = u8"گل";
или char32_t str32[] = U"گل";
. См. Эту тему , чтобы узнать больше об этом.
Если вы хотите взаимодействовать с аргументами командной строки или средой, используйте iconv()
для преобразования из WCHAR в UTF-32 или UTF-8.