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 に答える