将“wstring”转换为“const UInt8 *”

时间:2014-08-27 11:50:34

标签: c++ xcode macos unicode wstring

我必须将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 个答案:

答案 0 :(得分:1)

wchar_t在OSX上为32位,因此std::wstring可以保存UTF-32编码的字符串:

std::wstring str = ...;
CFStringRef encoded = CFStringCreateWithBytes(
                                     kCFAllocatorDefault,
                                     reinterpret_cast<uint8*>(str.c_str()),
                                     str.size() * sizeof(wchar_t),
                                     kCFStringEncodingUTF32LE,
                                     false);