1

ユニコードをいじって何かをしたいときに、プログラムに単純な関数があります。この関数では、ユーザーが入力した文字のコード値を表示したいと考えていました。それは可能だと思われました、ここに私の機能があります:

wstring listcode(wchar_t arg) {
    wstring str = L"";
    str += static_cast<int> (arg); //I tried (int) arg as well
    str += L": ";
    str += (wchar_t) arg;
    return str;
}

(int) "a"ご覧のとおり、整数値( などのASCII文字など)を表示したかっただけですlistcode(L"&")が、&: &!

そのようなワイド文字の整数値を見つけることはできませんか?

4

1 に答える 1

3

C++ では、文字とその他の文字列以外は文字列に何も追加できません。int文字列 (またはその他のもの) から文字列への暗黙的な変換はありません。これが文字列型の設計方法です。
代わりに、文字列ストリームを使用します。

std::wstring listcode(wchar_t arg)
{
  std::wostringstream oss;
  oss << static_cast<int>(arg);
  oss << L": ";
  oss << arg;
  return oss.str();
}

ただし、実際には、C++ で文字列に変換する場合は、文字列を返すよりも、ストリームに書き込む関数を使用する方が適切です。

void listcode(std::wostream os, wchar_t arg)
{
  os << static_cast<int>(arg);
  os << L": ";
  os << arg;
}

そうすれば、何かをコンソールまたはファイルに出力したい場合は、std::coutまたはファイル ストリームを直接渡すことができ、文字列が必要な場合は、文字列ストリームを渡すだけです。

于 2010-06-30T05:29:43.903 に答える