Я получил неподписанный символ со значением 1, мне нужно поместить это в строку типа «1».
Но если я попытаюсь поместить это непосредственно в поток строк, он получит значение char (1), и мне нужно, чтобы оно было «1».
Я знаю, что если я смогу получить это в функцию atoi, она вернет значение «1».
Но я попытался привести его к типу char и поместить в функцию atoi, но это вызывает исключение.
Уже пытались поместить его в строку, и они ввели функцию c_str () в функцию atoi, но пока безуспешно.
Если кто-то может помочь мне, я буду признателен.
Просто брось char
для int
прежде чем вставить его в std::stringstream
:
ss << static_cast<int>(c);
Это будет относиться к значению char
не как символ, а как числовое значение.
Я полагаю, вы путаете две функции здесь.
Вы хотите преобразовать целое число в строку.
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 ++ будет работать с этим все равно.
Чтобы преобразовать числовое значение в диапазоне [0,9] в соответствующий символ, просто добавьте '0'
к этому. Это гарантированно работает на всех системах.