C ++ Atoi с неподписанным символом

Я получил неподписанный символ со значением 1, мне нужно поместить это в строку типа «1».
Но если я попытаюсь поместить это непосредственно в поток строк, он получит значение char (1), и мне нужно, чтобы оно было «1».
Я знаю, что если я смогу получить это в функцию atoi, она вернет значение «1».
Но я попытался привести его к типу char и поместить в функцию atoi, но это вызывает исключение.
Уже пытались поместить его в строку, и они ввели функцию c_str () в функцию atoi, но пока безуспешно.
Если кто-то может помочь мне, я буду признателен.

-1

Решение

Просто брось char для int прежде чем вставить его в std::stringstream:

ss << static_cast<int>(c);

Это будет относиться к значению char не как символ, а как числовое значение.

3

Другие решения

Я полагаю, вы путаете две функции здесь.

Вы хотите преобразовать целое число в строку.

atoi (ascii to integer) однако берет строку и разбирает ее на целое число, делая "123" в 123,

Вы ищете itoa функция здесь, которая имеет этот прототип:

char *  itoa ( int value, char * str, int base );

В вашем случае это будет выглядеть так:

char Buf[10];
itoa(123, Buf, 10);
printf("%s", Buf); //Outputs 123

Пожалуйста, помните, что itoa не является частью стандарта, хотя поддерживается некоторыми компиляторами. Для более стандартной версии используйте:

sprintf(Buf, "%d", 123);

Конечно, все это простой C, но любой компилятор C ++ будет работать с этим все равно.

1

Чтобы преобразовать числовое значение в диапазоне [0,9] в соответствующий символ, просто добавьте '0' к этому. Это гарантированно работает на всех системах.

0