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

标签 c++ string

<分区>

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

最佳答案

不,这取决于实现。

std::stringstd::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/

相关文章:

c++ - 如果输入是一个字符然后在 C++ 中存储在一个整数中,为什么 cin 会得到奇怪的值?

c++ - 如何在 C++ 中调用 Rest 服务?

javascript - 编译器.cc :274: CHECK(feedback_vector_->length() == length) failed

c++ - '列表迭代器不可取消引用'

c++ - 从NULL构造字符串?

java - 字符串操作 - 中间 3 个字母

c++ - 在 QAbstractTableModel 中使用多个线程之间共享的数据

c++ - 将字符串放入 ifstream 方法中

string - 如何添加字符串的内容?

java - 如何评估以字符串形式给出的数学表达式?