带有unsigned char的C ++ atoi

时间:2013-03-04 12:12:59

标签: c++ atoi

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

3 个答案:

答案 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'即可。这保证适用于所有系统。