c ++ vector <char>和套接字</char>

时间:2009-09-09 14:03:41

标签: c++ sockets vector

有没有办法在向量中调用send / recv传递?

在c ++中缓冲套接字数据有什么好处?例如:读取直到\ r \ n或直到upper_bound(4096字节)

3 个答案:

答案 0 :(得分:10)

std::vector<char> b(100); 
send(z,&b[0],b.size(),0);

修改:我的第二个Ben Hymers'me22's个评论。另请参阅this answer,了解不尝试访问空向量中第一个元素的通用实现。

答案 1 :(得分:6)

为了扩展sbi所说的内容,std :: vector保证与C风格的数组具有相同的内存布局。因此,您可以使用&amp; myVector [0](第0个元素的地址)作为数组起始地址,并且可以安全地使用此数组的myVector.size()元素。请记住,下次修改矢量后,这些都会失效!

答案 2 :(得分:6)

要注意的一件事:&amp; v [0]在技术上是不允许的,如果向量为空,并且某些实现将断言,所以如果你从其他人获得缓冲区,请确保它们之前不是空的使用这个技巧。

C ++ 0x的vector有一个.data()成员函数(比如std :: string),可以避免这个问题并使事情更加清晰。