Как отобразить целое число буквально как символ - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть целое число 1, и я хочу отобразить его как символ '1' в C ++.До сих пор мне удалось преобразовать его, скажем, из целого числа 65 в символ «А».Как вы остановите это?

Ответы [ 4 ]

5 голосов
/ 10 февраля 2012
int theDigit = 1;
char ch = theDigit+'0';

Это работает, потому что 1 гарантирует, что последовательность символов '0' ... '9' является непрерывной, поэтому, если вы добавите свой номер к '0', вы получите соответствующий символ. Очевидно, что это работает только для однозначных чисел (если theDigit равно, например, 20, вы получите несвязанный символ), если вам нужно преобразовать в строку целое число, вам понадобится snprintf (в C) или строковые потоки (на C ++).

<ч />
  1. C ++ 11, [lex.charset] ¶3:

В исходных и исполнительных базовых наборах символов значение каждого символа после 0 в приведенном выше списке десятичных цифр должно быть на единицу больше, чем значение предыдущего.

Кстати, я полагаю, что они не предписывали смежность и в алфавитных символах только из-за EBCDIC.

2 голосов
/ 10 февраля 2012

Использовать поток строк.

int blah = 356;
stringstream ss;
string text;

ss << blah;
ss >> text;

Теперь text содержит "356" (без кавычек).Не забудьте включить заголовочные файлы и использовать пространство имен, если вы собираетесь скопировать мой код:

#include <sstream> //For stringstream
#include <string>

using namespace std;
1 голос
/ 10 февраля 2012
#include <stdio.h>
#include <stdlib.h>

int i = 3;
char buffer [25];
itoa (i, buffer, 10);
printf ("Integer: %s\n",buffer);

Целое число: 3

0 голосов
/ 10 февраля 2012

Вы только что спросили о печати целого числа, поэтому действительно простой ответ c ++:

#include <iostream>

int main()
{
  int value = 1;
  std::cout << value << endl;
  return 0;
}
...