我有一个名为CANMessage的类,它包含unsigned _id
,const char *_data
和char _len
等其他内容,但我将跳过这些内容:
CANMessage::CANMessage(unsigned _id, const char *_data, char _len...)
它是mbed API CAN的一部分,但我希望仅包含有用的信息。如有需要,请访问:https://os.mbed.com/docs/mbed-os/v5.11/mbed-os-api-doxy/_c_a_n_8h_source.html
例如,如果我创建了这样的CANMessage实例:
CANMessage message;
can.read(message); //stores a CAN frame in CANMessage
我可以这样访问数据:
for (int i=0;i<message.len;i++) {
pc.printf(" %02X",*(message.data+i)); //prints out the data one by one
}
我有一个名为sendToPc的向量,它以特定格式发送此数据。
vector<uint8_t> sendToPc;
这样,前4个元素将存储长度,其余位存储数据。但是我不太了解如何将数据复制到其中,因为我无法理解std :: copy的工作方式。我对这里所谓的输入迭代器感到困惑。
std::copy(/*first input op, last input op, output operator/*)
是否要指向该数据的指针?我觉得第一个输入是message.data,但是在向量中,我只能执行vect.end()来获取最后一个元素,但是在这种情况下如何获取数据的最后一个元素?
我相信输出迭代器将是sendToPc.begin() + 4
。
如何从sendToPc [4]开始存储,将类实例消息的所有数据复制到我的向量sendToPc中?
请注意,我使用的是C ++ 98。
编辑:这可以代替吗?只要我先把长度存储在那里...
for (int i=0;i<message.len;i++) {
CANdata.push_back(*(message.data+i));
}