无法将参数1从'const char *'转换为'const wchar_t *'+ windows phone运行时组件

时间:2015-04-20 09:02:56

标签: windows-phone-8 windows-phone windows-phone-8.1 c++-cli c++-cx

这里我指的是LocalIp std :: string。有没有办法转换? 当我使用它时,我收到以下错误

  

无法从' const char *'转换参数1 to' const wchar_t *' + windows phone运行时组件

property String^ LocalIp;
LocalIp = ref new String(_aLNetworkAdapterInfo->_localIp.c_str());
std::string _localIp;

2 个答案:

答案 0 :(得分:1)

对于此转化,您可以使用marshal_as

auto localIp = msclr::interop::marshal_as<String^>(_aLNetworkAdapterInfo->_localIp);

这需要:

#include <msclr/marshal_cppstd.h>

请查看the docs了解详情。

答案 1 :(得分:1)

如果要与WinRT Platform::String^进行互操作,则应使用std::string。如果您确实需要WideCharToMultiByte,那么您可以使用var SpecialArray = function () { var keys = Object.create(null), objs = []; this.push = function (obj) { for (var key in obj) { if (obj.hasOwnProperty(key)) { keys[key] = true; } }; objs.push(obj); return this; }; this.toArray = function () { objs.forEach(function (current) { for (var key in keys) { if (current[key] === undefined) { current[key] = ''; } } }); return objs; }; }; var obj1 = { a: 'hello', b: 'hello' }; var obj2 = { a: 'hello', b: 'hello', c: 'hola' }; var f = new SpecialArray; console.log(f.push(obj1).push(obj2).toArray()); 进行转化。