質問

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

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;
}

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

そのような幅広いキャラクターの整数値を見つけることはできませんか?

役に立ちましたか?

解決

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 またはファイルストリーム、そして文字列が必要な場合は、文字列ストリームを渡すだけです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top