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

1 回答 1

2

假设这BYTE是一个 typedef char(有或没有signedor unsigned),那么你的代码很好,但比必要的稍微冗长。a 使用的存储空间vector必须是一个连续的数组,因此获取第一个元素的地址会给您一个指向该数组的指针。任何一种 的char布局和对齐方式都与任何其他 的 相同char,因此指针转换是有效的。

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

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

但是,您应该buffer在使用[].

于 2012-07-17T07:48:06.773 回答