Преобразовать "wstring" в "const UInt8 *"
Мне пришлось конвертировать wstring в (UInt8 *). Также у меня была эта строка:
wstring str;
Не могли бы вы помочь мне преобразовать, пожалуйста? Я попробовал этот код, но он не работает:
wstring str;
uint8 *buf = reinterpret_cast<uint8>(str);
CFStringRef CFStringCreateWithBytes (CFAllocatorRef alloc,
const UInt8 *buf,
CFIndex sizeOfBuf,
CFStringEncoding encoding,
Boolean isExternalRepresentation);
1 ответ
Решение
wchar_t
32-битный на OSX, таким образом std::wstring
может содержать строку в кодировке UTF-32:
std::wstring str = ...;
CFStringRef encoded = CFStringCreateWithBytes(
kCFAllocatorDefault,
reinterpret_cast<uint8*>(str.c_str()),
str.size() * sizeof(wchar_t),
kCFStringEncodingUTF32LE,
false);