1

たとえば、10 未満の int を char に変換するにはどうすればよいですか:
5 -> '5'
(ASCII テーブルを使用せずに int を char に変換します)

4

4 に答える 4

13

標準文字セットでは数字は常に連続しているため、次のように記述できます。

int number = 5;
int character = number + '0';

/* Here, character == '5' */

たとえば、C11 標準を参照してください。

n1570、§ 5.2.1 文字セット

十進数の 10:0 1 2 3 4 5 6 7 8 9

[...]

ソースおよび実行の基本文字セットの両方で、上記の 10 進数のリストの 0 の後の各文字の値は、前の値よりも 1 大きくなります。

同じことが C++ にも当てはまります。

n3337、§ 2.3 文字セット

ソースおよび実行の基本文字セットの両方で、上記の 10 進数のリストの 0 の後の各文字の値は、前の値よりも 1 大きくなります。

于 2013-06-26T13:01:59.997 に答える
3

番号が 0 ~ 9 の場合は、次のように使用するとよいでしょう。

int i = 5;
char ch = i + '0';

しかし、おそらく最良のオプションは itoa() を使用することです

int i = 124;
char buffer[33];
itoa(i, buffer, 10);    //10 mean decimal.
于 2013-06-26T13:26:25.577 に答える
1

「ASCII テーブルを使用しない」という意味がよくわかりませんが、

int i = 5;
char c = i + '0';

あなたが望むことをします。'0'throughの文字コードは'9'、連続していて正しい順序であることが保証されています。

于 2013-06-26T13:02:45.183 に答える
1

ここにオプションがあります

char c;
int x;
//...
switch ( x )
{
   case 1:
      c = '1';
      break;
   //and so on
}

そしてもう一つ:

std::map<int, char> mapping;
mapping[1] = '1';
//...

char c = mapping[4];
于 2013-06-26T13:02:09.297 に答える