c++ - 为什么我不能使用指向字符数组的指针来填充向量?
问题描述
所以对于下面的代码片段,我一直在调试器中,当我打印 dataPtr 指向的内存值时,我可以看到它有值。但是,在循环执行后,如果我打印 dataStream 的值,它全是 0。知道为什么我不能从指针填充向量吗?
std::vector<uint8_t>* dataStream = new std::vector<uint8_t>();
uint8_t* dataPtr = udpPacket->getData();
for (int i = 0; i < head->m_cb; ++i) {
dataStream->push_back(*(dataPtr + i));
}
解决方案
感谢评论,似乎用范围初始化向量解决了这个问题!解决方案是使用
std::vector<uint8_t>* dataStream = new std::vector<uint8_t>(dataPtr, dataPtr + head->m_cb);
而不是一个循环来填充向量
推荐阅读
- git - ADF 无法从协作分支发布到 Azure Repos
- php - SQLSTATE [HY000] [1045] 用户'root'@'localhost'的访问被拒绝(使用密码:NO)-> Laravel 8
- r - 将 POSIXct 转换为字符时如何保持时区?
- c# - Jenkins ERROR 403 No valid crumb is included in the request - 使用 github 身份验证
- sql - 如何解决 Amazon Redshift 上递归 CTE 查询中的“断言”错误(使用 DataGrip 作为 IDE)?
- keycloak - Keycloak:从 SAMl 客户端注销
- arrays - 指向 c 中二维数组增量的指针
- javascript - 返回两点之间的距离并将其分配给位置列表上的数据属性
- etl - informatica:为什么我在使用 iif 函数时出错?
- c# - 带有 Google 云错误 CS1003 的 asp.net core 5 的自定义运行时 dockerfile:语法错误,