【发布时间】:2020-01-05 13:42:48
【问题描述】:
我的目标是将vec 数组设置为intData 数组。我阅读了this question 并将其应用于我的代码。在执行此过程之前,我调整了 intData 的大小。在 C# 中,这个 intData = GetIntArrayFromByteArray(vec); 没有问题,但是当涉及到 C++ 中的数组向量时,我感到很困惑。我在评论中说明了我在哪里得到错误。我尝试调整大小,但没有奏效。有人可以帮帮我吗?
代码说明;
buf收到消息(它不为空我收到来自客户端的消息)我创建了一个向量数组
vec,其大小与buf相同-
GetIntArrayFromCharArray()将 char 向量数组转换为 int 数组 向量。char buf[1550];//message gets here not empty vector<uint16_t> intData; //empty int vector //char buf ----> vecor<char> vec int n = sizeof(buf) / sizeof(buf[0]); vector<char> vec(buf, buf + n); intData.resize(vec.size());//here I resize /* irrelevant code piece runs here */ if (something == 1)// First fragment { intData = GetIntArrayFromCharArray(vec);//size out of range error here }
这是GetIntArrayFromCharArray() 进行转换
vector<uint16_t> GetIntArrayFromCharArray(vector<char> arr)
{
// If the number of bytes is not even, put a zero at the end
if ((arr.size() % 2) == 1)
arr.resize(arr.size()+1);
arr.push_back(0);
vector<uint16_t> intArray;
for (int i = 0; i < arr.size(); i += 2)
intArray.push_back((uint16_t)((arr[i] << 8) | arr[i + 1]));
return intArray;
}
【问题讨论】:
-
在
intData.resize(..); intData = GetIntArrayFromCharArray(vec);resize是不需要的。 -
@Jarod42 没有它,仍然给出同样的错误
-
我没有说是/修复错误,只是可以安全地删除它。
-
@Selen 无需在您的问题上添加 [已解决] 标记,您只需接受您给出的答案即可。