`std :: string`是否将其字符作为签名字符存储在内部?

joe*_*_04 0 c++ string

我正在写一个算法要求我将值插入到std::string无符号的1字节整数(0 - 255)中,并要求我将字符串的各个字符的值打印为整数,但是,我不断得到负值.我的猜测是,字符存储在带std::string符号的1字节字符(-128到127)中,因此,为什么我得到输出的负值.负值是我插入的正值的等效负形式.我做了一些研究,但似乎无法找到一种方式来表达我的问题,产生我正在寻找的答案.

iBu*_*Bug 5

不,这是依赖于实现的.

std::string是一个别名std::basic_string<char>,所以问题归结为char你的plarform/implementation 的签名.

如果你想要它没有签名,显式转换它:

std::cout << static_cast<int>(static_cast<unsigned char>(ch));
Run Code Online (Sandbox Code Playgroud)

或者,正如评论中所建议的那样,使用vector<uint8_t>而不是string.

  • @ joe_04_04使用`std :: vector <uint8_t>`而不是`std :: string`. (4认同)