Chr*_*tka 4 c++ sockets vector
有没有办法在向量中调用send/recv传递?
在c ++中缓冲套接字数据的好习惯是什么?例如:读取直到\ r \n或直到upper_bound(4096字节)
sbi*_*sbi 10
std::vector<char> b(100);
send(z,&b[0],b.size(),0);
Run Code Online (Sandbox Code Playgroud)
编辑:我第二次是本·海默斯和我22的评论.另外,请参阅此答案,了解不尝试访问空向量中第一个元素的通用实现.
为了扩展sbi所说的内容,std :: vector保证与C风格的数组具有相同的内存布局.因此,您可以使用&myVector [0](第0个元素的地址)作为数组起始地址,并且可以安全地使用此数组的myVector.size()元素.请记住,一旦您下次修改向量,这些都会失效!
需要注意的一件事:&v [0]在技术上是不允许的,如果向量为空,并且某些实现将断言,所以如果你从其他人获得缓冲区,请确保它们在使用此技巧之前不是空的.
C++ 0x的vector有一个.data()成员函数(比如std :: string),可以避免这个问题并使事情变得更清晰.
| 归档时间: |
|
| 查看次数: |
6118 次 |
| 最近记录: |