-1

我得到一个值为 1 的无符号字符,我需要把它放在一个像“1”这样的字符串中。但是,如果我尝试将其直接放入字符串流中,它将获得 char(1) 的值,我需要它为“1”。我知道如果我可以将它放入函数 atoi 中,它将返回“1”值。但是我尝试将其转换为 char 并将其放入 atoi 函数中,但它会引发异常。已经尝试将其放入字符串中,然后将 c_str() 转换为 atoi 函数,但尚未成功。如果有人可以帮助我,我会很感激。

4

3 回答 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 回答