【发布时间】:2016-06-03 19:31:36
【问题描述】:
有没有办法强制字符串使用 unsigned char 而不是 char?也许在构造函数中?
我需要进行算术运算(主要是递增、递减、~(按位非)),并且我需要能够使用溢出 255++ == 0... Not 127++ == -128(和下溢 0-- == 255...)
我不确定这个问题是否有意义,在这里稍微说明一下这是一个关于主题(流)Why do C++ streams use char instead of unsigned char?987654321@
的好问题我没有尝试将字符串转换为 unsigned char 我发现了很多关于如何在两者之间转换的问题。
【问题讨论】:
-
与答案无关:
char不一定(-128 到 127)。它可能表现为signed char或unsigned char -
你真的把字符串当成字符串用了吗?
-
某种意义上我把它当作字符串使用;我将 (strdup()) 从 getopt 复制到字符串变量 optarg,我使用类似这样的东西来消除空格 while(fin >> skipws >> ch) my_string.append(&ch); ( ch 是 char 的类型),我计划使用类似 my_string[i]++ 的东西来增加......
-
我询问是为了决定是否应该投票给
std::vector或std::basic_string答案。std::basic_string<unsigned char>似乎更接近您的问题,但my_string[i]++表示,您并没有真正将内容视为字符串,而是字节的集合,在这种情况下,我倾向于std::vector<unsigned char>但这需要您更改代码的其他部分。 -
哦,我根本不是 c++ 大师,我肯定要更改很多代码。首先,我使用的是纯字符/无符号字符(不是字符串),然后我重写了它以使用字符串,因为有很多 .methods。现在我决定只在需要使用溢出和下溢(和〜)的代码的少数部分使用ustring。感谢您的意见。