0

我需要将一个项目从 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<_Elem,_Traits,_Ax>' 转换为 'std::basic_string<_Elem>'

如何将 wchar_t[] 转换为 basic_string<_Elem> 而不是 basic_string<_Elem,_Traits,_Ax>...?

4

2 回答 2

1

只需通过构造函数直接使用 std::wstring ,该构造函数接受指向第一个元素的指针和数组的长度:

wchar_t warr[ 30 ];
// populate the array
std::wstring wstrTemp( &warr[ 0 ], 30 );
于 2012-04-04T14:21:21.620 回答
0

抱歉没有回复 - 我自己发现了问题所在。

事实证明,DOMString 是这样声明的:

typedef std :: basic_string< unsigned short > DOMString;

如此简单的转换为 unsigned short 就可以了:

ati_dom::DOMString w = (unsigned short *)wpom;
于 2012-04-18T10:41:41.487 回答