从 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);
}
从 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);
}
假设这BYTE
是一个 typedef char
(有或没有signed
or unsigned
),那么你的代码很好,但比必要的稍微冗长。a 使用的存储空间vector
必须是一个连续的数组,因此获取第一个元素的地址会给您一个指向该数组的指针。任何一种 的char
布局和对齐方式都与任何其他 的 相同char
,因此指针转换是有效的。
send
is的参数const void*
,并且(或多或少)任何指针都可以隐式转换为,因此无需强制转换:
ret = send(_socket, &buffer[0], buffer.size(), 0);
但是,您应该buffer
在使用[]
.