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

Converting a string to uint8_t array in C++

本文关键字:uint8 数组 转换 c++ 字符串      更新时间:2023-10-16

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

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

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

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

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

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

std::string name("sth");
const uint8_t* p = reinterpret_cast<const uint8_t*>(name.c_str());

注意,这个指针只有在原始字符串对象没有被修改或销毁的情况下才有效。

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

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