Имею массив байтов, байты в массив записаны в кодировке 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;
}
Или тебе наоборот нужно?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники