我得到一个值为 1 的无符号字符,我需要把它放在一个像“1”这样的字符串中。但是,如果我尝试将其直接放入字符串流中,它将获得 char(1) 的值,我需要它为“1”。我知道如果我可以将它放入函数 atoi 中,它将返回“1”值。但是我尝试将其转换为 char 并将其放入 atoi 函数中,但它会引发异常。已经尝试将其放入字符串中,然后将 c_str() 转换为 atoi 函数,但尚未成功。如果有人可以帮助我,我会很感激。
问问题
2623 次
3 回答
3
只需将 achar
转换为a ,int
然后再将其插入std::stringstream
:
ss << static_cast<int>(c);
这将char
不将 的值视为字符,而是将其视为数值。
于 2013-03-04T12:14:38.483 回答
1
我相信您在这里混淆了两个功能。
您希望将整数转换为字符串。
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++ 编译器都可以使用它。
于 2013-03-04T12:19:49.087 回答
0
要将 [0,9] 范围内的数值转换为相应的字符,只需添加'0'
即可。这保证适用于所有系统。
于 2013-03-04T13:30:23.253 回答