コードポイントを表示するためにwchar_tをintにキャストする方法は?
-
01-10-2019 - |
質問
私は自分のプログラムに単純な機能を持っています。ユニコードを混乱させて、それをやりたいと思っていました。この関数では、ユーザーが入力した文字のコード値を表示したいと考えました。それは可能だと思われました、ここに私の機能があります:
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
またはファイルストリーム、そして文字列が必要な場合は、文字列ストリームを渡すだけです。
所属していません StackOverflow