【发布时间】:2015-11-02 12:11:07
【问题描述】:
我正在开发一个应用程序来发送和接收数据包。
我正在使用std::vector 类(首先我开始在数组中制作数据包,如果您提出更好的建议,我愿意更改方法)。
我发现this 智能函数可以将任何const char* 添加到vector 对象。但我想做另一个在{.. , ..} 之间添加它们,就像我在 C# 中可以做的那样。举个例子:
vector<char*> packet;
char dest[] = { 0x10, 0x10, 0x0, 0x61 };
AppendLiteral(packet, dest); //Ok
/*Or directly:*/ AppendLiteral(packet, { 10, 10, 0, 20 }); //But this does not work
在 c++ 中可以吗?我知道在 C# 中你可以做这样的事情。
编辑:
一个可能的解决方案是:
vector<uint8> telegram;
vector<uint8> src = { 0x10, 0x10, 0x0, 0x20 };
vector<uint8> dst = { 0x10, 0x10, 0x0, 0x60 };
telegram.insert(telegram.end(), dst.begin(), dst.end());
telegram.insert(telegram.end(), src.begin(), src.end());
用一点函数来写less:
template <typename T>
void Append(vector<T> *data, vector<T> *data2)
{
data->insert(data->end(), data2->begin(), data2->end());
}
【问题讨论】:
-
你的意思是
std::vector? -
你确定最后一行的数字没有被解析为
ints? -
我找到了一种方法:使用向量并使用函数
insert。我也创建了一个新函数:void Append(vector<T> *data, vector<T> *data2) { data->insert(data->end(), data2->begin(), data2->end()); }
标签: c++ arrays vector telegram