gpt4 book ai didi

c++ - unsigned char 值类型的 basic_string

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:51 25 4
gpt4 key购买 nike

因此,字符串带有char 的值类型。我想要一个值类型为 unsigned char 的字符串。为什么我想要这样的东西是因为我目前正在编写一个将大量十六进制输入转换为十进制的程序,并且我正在使用字符串来计算结果。但是 char 的范围(-128 到 127)太小,范围为 0 到 255 的 unsigned char 可以完美地工作。考虑这段代码:

#include<iostream>
using namespace std;

int main()
{
typedef basic_string<unsigned char> u_string;
u_string x= "Hello!";

return 0;
}

但是当我尝试编译时,它显示了 2 个错误,一个是 _invalid conversion from const char* to unsigned const char*_ 另一个是initializing argument 1 of std::basic_string<_CharT, _Traits, _Alloc>::basic_string...(继续)

编辑:“为什么问题“将大量十六进制输入转换为十进制”需要用字符串文字初始化 u_string?”计算时,每次向十六进制数左移一次,乘以16,最多16x9=144,超过了127的极限,变成了负数。另外,我必须像这样初始化它:

x="0"; x[0] -='0';

因为我希望它的值为 0。如果变量为 null,则无法对其执行操作,如果为 0,则可以。

那么,我该怎么办呢?

最佳答案

字符串字面值是 const char,您将它们分配给 const unsigned char

你有两个解决方案:

首先,将字符串从标准字符串逐个元素复制到您的元素。

二、自己写user-literal对于您的字符串类:

inline constexpr const unsigned char * operator"" _us(const char *s,unsigned int)
{
return (const unsigned char *) s;
}

// OR

u_string operator"" _us(const char *s, unsigned int len)
{
return u_string(s, s+len);
}

u_string x = "Hello!"_us;

关于c++ - unsigned char 值类型的 basic_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com