2016-07-07 3 views
2

Quelle est la meilleure façon de le faire:Comment ajouter partiellement un char-ensemble au vecteur <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]); 

Je viens de découvrir quelque chose comme:

content.get_allocator = MESSAGE; 

Il n'a pas d'erreurs , mais je ne sais pas comment couper MESSAGE de 0 à SUCCESSFUL.

+1

note: 'content.get_allocator = MESSAGE;' ne devrait pas compiler, en outre, la fonction ['get_allocator'] (http://www.cplusplus.com/reference/vector/vector/get_allocator/) renvoie la valeur par défaut allocateur associé au paramètre template 2 du template 'vector' (dans votre cas, c'est allocateur '). – txtechhelp

+0

Si vous voulez vraiment éviter les copies inutiles, vous devriez être en mesure d'utiliser un vecteur «contenu» rempli par ex. zéros (autant que nécessaire pour accueillir tous les messages) et juste alimenter un pointeur avec offset en 'contenu' directement à recv. Le décalage est l'emplacement du prochain caractère inutilisé. –

Répondre

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

Bien sûr, ne pas oublier de vérifier si recv() a échoué et retourné -1, avant de le faire.