从 C 中的 std::string 获取字节

新手上路,请多包涵

我在一个 C++ 非托管项目中工作。

我需要知道如何获取像“一些要加密的数据”这样的字符串并获得一个字节 [] 数组,我将使用它作为 Encrypt 的源。

在 C# 我做

  for (int i = 0; i < text.Length; i++)
    buffer[i] = (byte)text[i];

我需要知道的是如何做同样的事情,但使用非托管 C++。

谢谢!

原文由 Vic 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 779
2 个回答

如果您只需要只读访问权限,那么 c_str() 会这样做:

 char const *c = myString.c_str();

如果您需要读/写访问权限,则可以将字符串复制到向量中。向量为您管理动态内存。然后,您不必弄乱分配/解除分配:

 std::vector<char> bytes(myString.begin(), myString.end());
bytes.push_back('\0');
char *c = &bytes[0];

原文由 Johannes Schaub - litb 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可能会使用 基于范围的 for 循环,如下所示:

 std::vector<std::byte> getByteArray(const string& str)
{
    std::vector<std::byte> buffer;
    for (char str_char : str)
        buffer.push_back(std::byte(str_char));

    return buffer;
}

原文由 user11262312 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题