带有无符号字符的C++atoi

C++ atoi with unsigned char

本文关键字:C++atoi 字符 无符号      更新时间:2023-10-16

我得到了一个值为1的无符号字符,我需要把它放在一个类似"1"的字符串中。但是,如果我尝试将其直接放入字符串流中,它将获得char(1(的值,并且我需要它为"1"。我知道,如果我能将其输入函数atoi,它将返回"1"值。但我试图将其转换为char并放入atoi函数中,但它抛出了一个异常。已经尝试将其放入字符串中,并将c_str((转换为atoi函数,但尚未成功。如果有人能帮助我,我会感激的。

在将char插入std::stringstream:之前,只需将其强制转换为int

ss << static_cast<int>(c);

这将不将char的值视为字符,而是将其视为数值。

我相信您混淆了这里的两个函数。

您希望将整数转换为字符串。

然而,atoi(ascii到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'即可。这保证在所有系统上都能工作。