我有这样的缓冲区:
vector<unsigned char> buf
Run Code Online (Sandbox Code Playgroud)
我如何将其转换为char*?
如果我做:
(char *)buf
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
/home/richard/Desktop/richard/client/src/main.cc:102: error: invalid cast from type ‘std::vector<unsigned char, std::allocator<unsigned char> >’ to type ‘char*’
Run Code Online (Sandbox Code Playgroud)
对于那些想知道我为什么要这样做的人.我需要将缓冲区传递给此函数:
n_sent = sendto(sk,(char *)buf,(int)size,0,(struct sockaddr*) &server,sizeof(server));
Run Code Online (Sandbox Code Playgroud)
它只接受char*.
Arm*_*yan 58
reinterpret_cast<char*> (&buf[0]);
Run Code Online (Sandbox Code Playgroud)
向量保证其元素占用连续的内存.所以你寻找的"数据"实际上是第一个元素的地址(要注意vector <bool>,这个技巧会失败).另外,为什么不是你的缓冲区,vector<char>所以你不需要reinterpret_cast?
reinterpret_cast<char*>(buf.data());
Run Code Online (Sandbox Code Playgroud)