Как перевести ansi строку в unicode в с++?

Пользователь

от judd , в категории: C/C++ , 8 месяцев назад

Как перевести ansi строку в unicode в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jose , 4 месяца назад

@judd 

Для перевода ANSI строки в Unicode в C++ можно использовать стандартные функции Windows API - MultiByteToWideChar(). Эта функция преобразует ANSI строку в формат Unicode (UTF-16) и возвращает количество символов в результирующей строке:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include 
#include 

std::wstring ConvertAnsiToUnicode(const std::string& text)
{
    int len = MultiByteToWideChar(CP_ACP, 0, text.c_str(), -1, NULL, 0);
    wchar_t* wstr = new wchar_t[len];
    MultiByteToWideChar(CP_ACP, 0, text.c_str(), -1, wstr, len);
    std::wstring result(wstr);
    delete[] wstr;
    return result;
}


Здесь используется кодовая страница CP_ACP (ANSI Code Page) для преобразования кодировки.


Пример использования:

1
2
std::string ansiText = "Hello, world!";
std::wstring unicodeText = ConvertAnsiToUnicode(ansiText);


Теперь переменная unicodeText содержит строку "Hello, world!" в формате Unicode.