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 であると仮定すると、コードは問題ありませんが、必要以上に冗長になります。a が使用するストレージは連続した配列である必要があるため、最初の要素のアドレスを取得すると、その配列へのポインターが得られます。どの種類のも、他の種類の と同じレイアウトと位置合わせを持つため、ポインター変換は有効です。char
signed
unsigned
vector
char
char
への引数send
は isconst void*
であり、(多かれ少なかれ) 任意のポインターを暗黙的にそれに変換できるため、キャストする必要はありません。
ret = send(_socket, &buffer[0], buffer.size(), 0);
buffer
ただし、 を使用する前に、 が空でないことを確認 (または確認) する必要があります[]
。