Windows — C ++ & lt; codecvt & gt; Строка utf8 в utf16

Я хотел бы преобразовать строку в строку UTF-16.
Я написал следующий код:

std::string str = "aé"; // a test string with a French character

using cvt_type = std::codecvt_utf8_utf16<wchar_t>;
std::wstring_convert<cvt_type> converter;

std::wstring wstr = converter.from_bytes(str); // exception: std::range_error

Приведенный выше пример отлично работает со строками, содержащими юникод (например, std::string str="\u0061\u00e9") или строки без специальных символов.
Но мой первый пример не работает.

Я получаю следующее исключение: Microsoft C++ exception: std::range_error at memory location 0x00A9E7E4
Программа останавливается там: converter.from_bytes(str);

Когда я добавляю строку str[1]=130; // é все работает нормально, поэтому я думаю, что причиной проблемы являются подписанные символы.
Мне нужно использовать строку подписанных символов, потому что я хочу отправить данные через TCP-сокеты.

Как выполнить преобразование, чтобы я мог отправлять свои данные с помощью сокетов?

Заранее спасибо.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]