我有一个值为1的unsigned char,我需要把它放在像“1”这样的字符串中。 但是如果我尝试将它直接放入字符串流中,它将获得char(1)的值,我需要它为“1”。 我知道如果我可以将它放入函数atoi中,它将返回“1”值。 但我尝试将它转换为char并将其放在atoi函数中,但它会引发异常。 已经尝试将它放在一个字符串中,然后将c_str()转换为atoi函数,但还没有成功。 如果有人可以帮助我,我会帮助你。
答案 0 :(得分:3)
只需将char
投放到int
,然后再将其插入std::stringstream
:
ss << static_cast<int>(c);
这会将char
的值视为字符而不是数字值。
答案 1 :(得分:1)
我相信你在这里混淆了两个功能。
您希望将整数转换为字符串。
然后 atoi
(ascii到整数)接受一个字符串并将其解析为整数,使"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 ++编译器都可以使用它。
答案 2 :(得分:0)
要将[0,9]范围内的数值转换为相应的字符,只需向其添加'0'
即可。这保证适用于所有系统。