我想要一个std :: string对象(例如名字)到C ++中的uint8_t数组。该
function reinterpret_cast<const uint8_t*>
拒绝我的字符串。由于我使用NS-3进行编码,因此一些警告被解释为错误。
答案 0 :(得分:18)
如果你想要一个指向string
数据的指针:
reinterpret_cast<const uint8_t*>(&myString[0])
如果您需要string
数据的副本:
std::vector<uint8_t> myVector(myString.begin(), myString.end());
uint8_t *p = &myVector[0];
答案 1 :(得分:8)
String对象具有.c_str()
成员函数,返回const char*
。该指针可以强制转换为const uint8_t*
:
std::string name("sth");
const uint8_t* p = reinterpret_cast<const uint8_t*>(name.c_str());
请注意,只要未修改或销毁原始字符串对象,此指针才有效。
答案 2 :(得分:1)
如果您需要一个实际数组(不是其他答案所建议的指针;差异在 this answer 中有很好的解释),您需要使用 std::copy
中的 <algorithm>
:
std::string str = "foo";
uint8_t arr[32];
std::copy(str.begin(), str.end(), std::begin(arr));