读取std :: vector <unsigned char =“”> </unsigned>中特定位置的数据

时间:2012-04-01 10:34:55

标签: c++ vector position

我的std::vector<unsigned char>包含二进制数据。

我只是想在具有特定大小的特定位置读取此向量。

我会这样的功能:

myvector.read(PositionBegin, Size)
myvector.read(1200,3)

此功能可以是从12001203的读取数据。

在C ++中是否有这样的函数?

2 个答案:

答案 0 :(得分:2)

我假设您想要另一个范围为out的std :: vector ...

此链接提供了一个很好的答案:Best way to extract a subvector from a vector?

你的功能可能如下:

std::vector<unsigned char> readFromVector(const std::vector<unsigned char> &myVec,
        unsigned start, unsigned len)
{
    // Replaced T with unsigned char (you could/should templatize...)
    std::vector<unsigned char>::const_iterator first = myVec.begin() + start;
    std::vector<unsigned char>::const_iterator last = first + len;
    std::vector<unsigned char> newVec(first, last);
    return newVec;
}

答案 1 :(得分:0)

为您的问题使用适当的标签。

一个简单的迭代器会引导你的向量:

for (i=0; i<myvector.size(); i++)
cout << " " << myvector.at(i);
cout << endl;

所以如果你想使用一个范围,你只需要设置你的for循环约束

for (i=PositionBegin; i<PositionBegin+Size; i++)
cout << " " << myvector.at(i);
cout << endl;

如果您希望此功能将此输出到另一个矢量, 而不是使用cout,你必须将它推入一个新的向量。

mynewvector.push_back(myvector.at(i));

请不要忘记,当您使用此功能时,您必须使用以下类型进行制作:

vector<type> function()

最后:

return mynewvector;

cplusplus

上阅读向量