1

次のASCII値を持つ文字でwstringを作成する必要があります:30、29、28、27、26、25。

VB6では、asc(30) + asc(29)+などを行います...

C++に相当するものは何ですか?

ありがとう!

4

2 に答える 2

5

これは文字セット変換に関するひっかけ問題ですか? :) 標準では、ASCII 文字が wchar_t の ASCII 整数値で表されることを保証していないためです (ほとんどのコンパイラ/システムでは、これは true ですが)。問題がある場合は、適切なロケールを使用して明示的に char を拡張します。

std::wstring s;
std::locale loc("C"); // ASCII エンコーディングでロケールを選択

s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(30));
s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(29));
s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(28));

末尾の 0 で終了しないでください。.c_str() を呼び出して wstring を wchar_t * に変換するときに追加されます。

于 2010-08-11T17:08:29.973 に答える
1

std::wstring は、文字列を装った std::vector にすぎません。

したがって、次のように push_back メソッドを使用できるはずです。

std::wstring s;

s.push_back(65);
s.push_back(0);

std::wcout << s << std::endl;

0 ターミネータを忘れないでください。

于 2010-08-11T14:39:16.043 に答える