带有无符号字符的C++atoi
C++ atoi with unsigned char
我得到了一个值为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'
即可。这保证在所有系统上都能工作。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 使用 atoi 将字符数组转换为 int 会给出不同的值
- Win32 Atoi 问题无法将参数 1 从 'wchar_t [5]' 转换为常量字符 *
- C:atoi()对未符号字符的输出输出
- 我将如何在不使用 if 语句、字符数组、apstring 或 atoi 的情况下将带有两位数字的字符串转换为 int
- 带有无符号字符的C++atoi