如何在C ++中的tcp套接字上写入void *?特别是,我需要知道类型,因为我不知道它的数据大小吗?
在这个例子中,我不知道buf的数据大小:
foo(const void *buf, int socket){
int n= write(socket , buf, ???);
}
答案 0 :(得分:3)
当然,您需要知道要写入的对象的大小。您不必知道确切的类型,但至少要知道它的字节大小。 C ++无法闻到要写入的对象有多长。
如果您知道类型,只需使用sizeof
运算符就可以将长度传递给您的函数。但请确保使用您的类型的sizeof
,而不是指向您的类型的指针的sizeof
。即,如果您的对象类型为YourClass
,请使用sizeof(YourClass)
,而不是sizeof(YourClass*)
甚至sizeof(void*)
!