【问题标题】:How to convert std::string to std::vector<uint8_t>?如何将 std::string 转换为 std::vector<uint8_t>?
【发布时间】:2017-01-19 08:38:45
【问题描述】:

在 google play 游戏服务上保存游戏所需的数据格式为:std::vector&lt;uint8_t&gt;,在“数据格式”下指定: https://developers.google.com/games/services/cpp/savedgames

我假设向量代表某种字节数组。那是对的吗 ?那么如何将std::string 转换为std::vector&lt;uint8_t&gt; 呢?

【问题讨论】:

  • 如果您想逐个字符地执行此操作,您可以循环并将元素转换/添加到向量...

标签: c++ c++11


【解决方案1】:

std::vector 有一个专门用于此目的的构造函数:

std::string str;
std::vector<uint8_t> vec(str.begin(), str.end());

【讨论】:

  • @pSoLT:终止零是 C 风格字符串约定的一部分,而不是 C++ 字符串的一部分,通常std::vector&lt;uint8_t&gt;不应被视为字符串。
  • @StoryTeller:我不同意(见之前的评论)
  • 没有,我刚刚在coliru做了测试
  • @StoryTeller 不,std::string 的存储在末尾有一个额外的空字节,但它不是字符串的一部分。
  • @T.C. - 是的,我的立场是正确的。 reference for data() 确认。
【解决方案2】:

添加到 DeiDei 的答案,如果向量已经构建,您可以执行以下操作:

std::string str;
std::vector<uint8_t> vec;
...
vec.assign(str.begin(), str.end());

【讨论】:

    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多