如何将wchar_t []转换为basic_string< _Elem>?

时间:2012-04-04 14:18:13

标签: c++

我需要将项目从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; ...?

2 个答案:

答案 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;