2016-07-07 31 views
2

什麼是做到這一點的最好辦法:如何部分增加一個字符數組爲矢量<char>

vector<char> content; 
char MESSAGE[1024]; 
SUCCESSFUL = recv(sock_CONNECTION, MESSAGE, 1024, NULL); 
for (int i = 0; i < SUCCESSFUL; i++) 
    content.push_back(MESSAGE[i]); 

我剛剛發現是這樣的:

content.get_allocator = MESSAGE; 

它沒有任何錯誤,但我不知道如何從0減少MESSAGESUCCESSFUL

+1

note:'content.get_allocator = MESSAGE;'不應編譯,此外,['get_allocator'](http://www.cplusplus.com/reference/vector/vector/get_allocator/)函數返回默認值分配器與'vector'模板的第二個模板參數相關聯(在你的情況下,它是'allocator ')。 – txtechhelp

+0

如果你真的想避免不必要的複製,你應該可以使用充滿了例如零(儘可能多地容納所有消息),並直接將一個帶偏移量的指針提供給'內容'直接到recv。偏移量是下一個未使用字符的位置。 –

回答

4
content.insert(content.end(), MESSAGE, MESSAGE+SUCCESSFUL); 

當然,不要忘記檢查,如果recv()失敗,並返回-1,你這樣做之前。