将vector <unsigned char>转换为uint8_t*

use*_*697 2 c++ casting stdvector

我有一个需要uint8_t*作为输入的函数(unsigned char).但是,我将我的字符串保存为vector<unsigned char>.如何将其转换uint8_t*为我的功能才能接受?

谢谢.

Bry*_*hen 7

在大多数情况下,unsigned char都是一样的uint8_t.如果c ++ 11可用,您可以使用它来符合它

static_assert(std::is_same<unsigned char, uint8_t>::value, "uint8_t is not unsigned char");
Run Code Online (Sandbox Code Playgroud)

那么你可以用它data来得到你想要的东西

vector<unsigned char> vec = // your vector
uint8_t *data = vec.data();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,一些仍然流行的旧编译器不支持“std::vector::data()”。在这种情况下,只要向量不为空,`&amp;vec[0]` 就可以解决问题。 (2认同)