小编S. *_*sey的帖子

如何从uint8_t向量创建istream?

我正在添加通过网络获取数据的能力,以便只读取本地文件的代码.我正在使用的网络库以a的形式发送和接收数据vector<uint8_t>.我希望能够在读取文件后重用处理数据的代码,但该代码需要std :: istream,有没有办法让istream读取矢量数据?这是相同的数据,所以我觉得应该有办法,但我无法找到或找出如何做的代码.

当前代码:

    std::ifstream stream("data.img", std::ios::in | std::ios::binary | std::ios::ate);

    if (!stream.is_open())
    {
        throw std::invalid_argument("Could not open file.");
    }
    // the arg for processData is std::istream
    processData(stream);
Run Code Online (Sandbox Code Playgroud)

网络框架:

    vector<uint8_t> data = networkMessage.data;

    // need some way to create istream from data
    std::istream stream = ?

    processData(stream);
    stream.close();
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,还是我咆哮错误的树?

c++

9
推荐指数
1
解决办法
1623
查看次数

如何在std :: vector <uint8_t>中存储来自std :: vector <short>的数据

我想要做的是将数据存储在a std::vector<short>std::vector<uint8_t>,将每个short分成两个uint8_t值.我需要这样做,因为我有一个只发送的网络应用程序std::vector<uint8_t>,所以我需要转换为uint8_t发送,然后在收到uint8_t向量时转换回来.

通常我会做什么(以及我在查找问题时看到的)是:

std::vector<uint8_t> newVec(oldvec.begin(),oldvec.end());

但是,如果我理解正确,这将取每个单独的短值,截断到uint8_t的大小,并创建一个新数据量和相同数量的条目的向量,当我想要的是相同数量的数据有两倍的条目.

包含一种扭转过程并尽可能避免复制的解决方案将会有很大帮助.谢谢!

c++ vector

5
推荐指数
2
解决办法
1483
查看次数

标签 统计

c++ ×2

vector ×1