Преобразовать "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);
Другие вопросы по тегам