我必须将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);
答案 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);