J'ai du code qui combine divers éléments dans un tampon. Mon code ressemble à ceci:Existe-t-il une façon plus simple de combiner std :: string dans std :: vector <char>?
static void CreatePacket(const std::string& source, const std::string id, const std::string payload, std::vector<char>& buffer)
{
buffer.resize(source.size() + id.size() + payload.size());
std::vector<char>::iterator bufferDest = buffer.begin();
// Start the message
char MessageStart = '$';
*bufferDest = MessageStart;
++bufferDest;
// Copy the message source
std::copy(source.begin(), source.end(), bufferDest);
bufferDest += source.size();
// Copy the message id
std::copy(id.begin(), id.end(), bufferDest);
bufferDest += id.size();
}
Cette méthode est appelée comme suit:
std::vector<char> buffer;
std::string source = "AB";
std::string id = "CDE";
std::string payload = "payload";
CreatePacket(source, id, payload, buffer);
Je suis encore un peu vert sur le chemin std
de faire les choses, mais ma mise en œuvre se sent un peu maladroit (spécifiquement, avoir à incrémenter explicitement le bufferDest
après chaque copie). Y a-t-il une façon plus propre de faire cela?
Mon compilateur ne prend pas en charge C++ 11 si cela fait une différence.
vous n'avez pas besoin d'incrémenter explicitement la 'bufferDest',' std :: copy' retour qui vous –