【发布时间】:2012-11-12 15:50:27
【问题描述】:
我正在尝试从返回 const char* 的方法的结果构造一个 Platform::String
我根本无法让它工作,并且多年来一直在摸不着头脑。
我不是一个非常有经验的 c++ 开发人员,所以答案可能很明显,但我似乎无法解决。
感谢您的帮助。
【问题讨论】:
标签: c++ windows-8 windows-runtime c++-cx
我正在尝试从返回 const char* 的方法的结果构造一个 Platform::String
我根本无法让它工作,并且多年来一直在摸不着头脑。
我不是一个非常有经验的 c++ 开发人员,所以答案可能很明显,但我似乎无法解决。
感谢您的帮助。
【问题讨论】:
标签: c++ windows-8 windows-runtime c++-cx
Platform::String 在内部使用char16,并在其构造函数中使用char16*。您需要使用MultiByteToWideChar 将char* 文本转换为char16* 文本。 This question 谈到从Platform::String 到char*,从char* 到Platform::String 应该遵循相反的路径。
【讨论】:
您可以使用 mbstowcs http://www.cplusplus.com/reference/cstdlib/mbstowcs/ 填充 wchar_t 缓冲区,然后将其传递给 Platform::String 构造函数以使用所需数据创建实例。
static wchar_t buffer[ MAX_BUFFER ];
mbstowcs( buffer, source, MAX_BUFFER );
platformString = ref new Platform::String( buffer );
【讨论】: