2011-06-21 17 views
1

我通常會設置一個巨大的緩衝區並從套接字讀取數據,並且我意識到它不是讀取數據的好方法。如何在C++中使用向量作爲套接字的輸入緩衝區

我曾經有過這樣的事情

int bufsize = 4096; 
char *buf; 
int recv = read(sock, buf, bufsize) 

我喜歡使用std :: vector的更換字符緩衝區。我不確定這是更好的方法。

你能否給我提供關於此的示例教程或示例?

在此先感謝...

+0

何不的std :: string? – mattn

+0

使用字符串向量的優點是什麼? – codereviewanskquestions

+0

如您所知,如果recv數據是字符串,它可以用於操作。 :)不介意這個評論。 – mattn

回答

5

這很簡單:

std::vector<char> buf(4096); // create buffer with preallocated size 
int recv = read(sock, &buf[0], buf.size()); 
+1

如果我將緩衝區大小設置爲100,並且傳入的數據包比這個大? I – codereviewanskquestions

+0

也可以在閱讀後衝出載體以獲取新數據? – codereviewanskquestions

+0

您可以使用['std :: vector :: resize'](http://www.cplusplus.com/reference/stl/vector/resize/)函數調整緩衝區大小。 –