我需要将项目从VS2003转换为VS2008。在以下代码中:
wchar_t wpom[30];
mbtowc(wpom, "olaboga", 10);
ati_dom::DOMString w = wpom;
我收到错误(在最后一行):无法从'wchar_t [30]'转换为'basic_string< _Elem>')。
我尝试将其修改为:
wchar_t wpom[30];
mbtowc(wpom, "olaboga", 10);
std::basic_string<wchar_t> basic_wpom(wpom);
ati_dom::DOMString w = basic_wpom;
但我完成的是获得另一个错误:无法转换为'std :: basic_string&lt; _Elem,_Traits,_Ax&gt;'到'std :: basic_string&lt; _Elem&gt;'
如何将wchar_t []转换为basic_string&lt; _Elem&gt;而不是basic_string&lt; _Elem,_Traits,_Ax&gt; ...?
答案 0 :(得分:1)
只需通过构造函数直接使用std :: wstring,该构造函数接受指向第一个元素和数组长度的指针:
wchar_t warr[ 30 ];
// populate the array
std::wstring wstrTemp( &warr[ 0 ], 30 );
答案 1 :(得分:0)
很抱歉没有回复 - 我发现问题出在我自己身上。
事实证明,DOMString的声明如下:
typedef std :: basic_string< unsigned short > DOMString;
如此简单的转换为无符号短片就可以解决问题:
ati_dom::DOMString w = (unsigned short *)wpom;