gpt4 book ai didi

c++ - 如何将 const std::vector 转换为 char

转载 作者:行者123 更新时间:2023-11-28 03:34:23 25 4
gpt4 key购买 nike

将 unsigned char std::vector 转换为 char 的正确方法是什么?

void SendSocket(const std::vector<BYTE> &buffer)
{
int ret;
const BYTE* bufferPtr = &buffer[0];
ret = send(_socket, (const char*)bufferPtr, buffer.size(), 0);
}

最佳答案

假设 BYTEchar 的类型定义(带或不带 signedunsigned),那么您的代码很好,但比必要的稍微冗长。 vector 使用的存储必须是一个连续的数组,因此获取第一个元素的地址会为您提供指向该数组的指针。任何类型的 char 都与任何其他类型的 char 具有相同的布局和对齐方式,因此指针转换是有效的。

send 的参数是 const void*,并且(或多或少)任何指针都可以隐式转换为它,因此无需强制转换:

ret = send(_socket, &buffer[0], buffer.size(), 0);

但是,在使用 [] 之前,您应该检查(或以其他方式确保)buffer 不为空。

关于c++ - 如何将 const std::vector<unsigned char> 转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11517921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com