私はバッファにさまざまな要素を組み合わせたコードをいくつか持っています。次のようにメソッドが呼び出されていることstd :: stringを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();
}
::私のコードは次のようになります
std::vector<char> buffer;
std::string source = "AB";
std::string id = "CDE";
std::string payload = "payload";
CreatePacket(source, id, payload, buffer);
私はまだ物事のstd
途中で少し緑んだけど、私の実装は少し不格好な感じ(具体的には、各コピーの後にbufferDest
を明示的にインクリメントする必要があります)。これを行うためのよりクリーンな方法がありますか?
違いがある場合、マイコンパイラはC++ 11をサポートしていません。
あなたが明示的に 'bufferDest'、'のstd ::あなたにそれを返すcopy' –