我正在将数据序列化为 uint8_t 向量以将其发送到另一个模块,我有一个从函数返回的字符串
getVal()
,当我执行 vector.insert() 时,它会在我的向量中显示更多随机值。
std::string getVal()
{
std::string x = "564";
return x ;
}
int main()
{
std::vector<uint8_t> data {0x70};
data.insert(data.end(),getVal().begin(),getVal().end());
for (auto i:data)
std::cout << i <<std::endl;
std::cout<<data.size()<<std::endl;
std::cout << getVal() <<" ,type: "<< sizeof(getVal()) << ", .size(): "<< getVal().size()<<std::endl;
return 0;
}
感谢您的帮助。
解决方案是循环字符串并使用 .push_back(),但我需要理解为什么 .insert() 会发生这种情况
因为
getVal
按值返回,两次调用会返回两个不同且不相关的 std::string
对象。
这些对象的
begin
和 end
迭代器将与不同的对象相关,并且将它们一起使用将导致未定义的行为。
您需要创建一个静态字符串,并返回对其的引用。或者您需要存储
getVal
返回的字符串并使用该对象。