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

时间:2011-10-05 16:24:34

标签: c++ ns-3

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

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));