在 C++ 中将字符串转换为 uint8_t 数组

发布于 2024-12-08 08:52:33 字数 150 浏览 1 评论 0原文

我想要一个 std::string 对象(例如名称)到 C++ 中的 uint8_t 数组。这 函数reinterpret_cast拒绝我的字符串。由于我使用 NS-3 进行编码,因此一些警告被解释为错误。

I want an std::string object (such as a name) to a uint8_t array in C++. The
function reinterpret_cast<const uint8_t*> rejects my string. And since I'm coding using NS-3, some warnings are being interpreted as errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不再让梦枯萎 2024-12-15 08:52:33

如果您想要一个指向 string 数据的指针:

reinterpret_cast<const uint8_t*>(&myString[0])

如果您想要 string 数据的副本:

std::vector<uint8_t> myVector(myString.begin(), myString.end());
uint8_t *p = &myVector[0];

If you want a pointer to the string's data:

reinterpret_cast<const uint8_t*>(&myString[0])

If you want a copy of the string's data:

std::vector<uint8_t> myVector(myString.begin(), myString.end());
uint8_t *p = &myVector[0];
深居我梦 2024-12-15 08:52:33

字符串对象有一个.c_str()成员函数,它返回一个const char*。该指针可以转换为 const uint8_t*:

std::string name("sth");

const uint8_t* p = reinterpret_cast<const uint8_t*>(name.c_str());

请注意,只有当原始字符串对象未被修改或销毁时,该指针才有效。

String objects have a .c_str() member function that returns a const char*. This pointer can be cast to a const uint8_t*:

std::string name("sth");

const uint8_t* p = reinterpret_cast<const uint8_t*>(name.c_str());

Note that this pointer will only be valid as long as the original string object isn't modified or destroyed.

淡淡の花香 2024-12-15 08:52:33

如果您需要一个实际的数组(而不是指针,正如其他答案所建议的那样;这个答案中很好地解释了差异),您需要使用 中的 std::copy

std::string str = "foo";
uint8_t arr[32];
std::copy(str.begin(), str.end(), std::begin(arr));

If you need an actual array (not a pointer, as other answers have suggested; the difference is explained very nicely in this answer), you need to use std::copy from <algorithm>:

std::string str = "foo";
uint8_t arr[32];
std::copy(str.begin(), str.end(), std::begin(arr));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文