Имею массив байтов, байты в массив записаны в кодировке UTF-8, соответственно нужно как-то преобразовать байты в строку такой же кодировке, каким образом это можно сделать?
unsigned char binarr[1024]; // условно этот массив заполнен байтами считанными из файла
string test = ""; // в эту строку желаю сунуть символы преобразованные из массива байтов
Вот так выглядит эта процедура в C#:
byte[] foo;
string test = Encoding.Unicode.GetString(foo);
std::string
это и так набор char
. Т.е. однобайтовый набор. Главное тут понимать, что отдельно взятый элемент такой строки (например, с помощью operator[]
) не обязан быть валидным символом, т.к. UTF-8 многобайтовая кодировка. Заполнить же std::string
из массива можно соответствующим конструктором, например так:
std::string test(binarr, размер_полезных_данных_массива);
А вот как интерпретировать этот набор уже совсем дело другое. То есть зависит от того, как дальше вы хотите работать со строкой test
.
Пример работающего кода:
wchar_t wctxt[512];
char mbtxt[256];
char *utf8_to_oem(const char *s)
{
MultiByteToWideChar(CP_UTF8,0,s,strlen(s),wctxt,256);
CharToOemW(wctxt,mbtxt);
return mbtxt;
}
Или тебе наоборот нужно?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, пытаюсь подключиться к БД но в консоль выдаёт
Как можно отследить, какая функция обращается и что делает с каким-то элементом? У меня в проекте возник баг, суть которого заключается в том,...
На этой странице размещена секция с 2 кнопками "Сегодня" и "завтра", по центру скролл с выбором дат и слева датепикерНе могу найти данную библиотеку,...