有没有办法在向量中调用send / recv传递?
在c ++中缓冲套接字数据有什么好处?例如:读取直到\ r \ n或直到upper_bound(4096字节)
答案 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),可以避免这个问题并使事情更加清晰。