<分区>
我正在编写一个算法,要求我通过一个无符号的 1 字节整数 (0 - 255) 将值插入到 std::string
中,并要求我打印各个字符的值字符串作为整数,但是,我不断得到负值。我大胆的猜测是这些字符作为带符号的 1 字节字符(-128 到 127)存储在 std::string
中,因此,为什么我得到负值输出。负值是我插入的正值的等效负值形式。我做了一些研究,但似乎无法找到一种方式来表达我的问题,从而产生我正在寻找的答案。
<分区>
我正在编写一个算法,要求我通过一个无符号的 1 字节整数 (0 - 255) 将值插入到 std::string
中,并要求我打印各个字符的值字符串作为整数,但是,我不断得到负值。我大胆的猜测是这些字符作为带符号的 1 字节字符(-128 到 127)存储在 std::string
中,因此,为什么我得到负值输出。负值是我插入的正值的等效负值形式。我做了一些研究,但似乎无法找到一种方式来表达我的问题,从而产生我正在寻找的答案。
最佳答案
不,这取决于实现。
std::string
是 std::basic_string<char>
的别名,所以问题归结为 char
的签名在您的平台/实现上。
如果你想要它无符号,显式转换它:
std::cout << static_cast<int>(static_cast<unsigned char>(ch));
或者,按照评论中的建议,使用 vector<uint8_t>
而不是 string
.
关于c++ - `std::string` 是否在内部将其字符存储为签名字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343160/