c++ - 使用 std::vector 作为数据缓冲区

标签 c++ vector stl

我正在尝试使用 std::vector 作为内存缓冲区:

int main( )
{
    int i = 0x01020304;
    size_t size = sizeof(int);
    std::vector<char> data;

    data.insert( data.end(), (char*)&i,  (char*)(&i  + size) );

    for ( int i = 0; i < data.size(); ++i){
        std::cout << int(data[i]) << std::endl;
    }

    return 0;
}

我期待输出 4个 3个 2个 1

但是我得到了

4
3
2
1
51
73
-107
81
-9
127
0
0
36
-7
84
-50

有人能解释一下我做错了什么吗?

最佳答案

大小以字节为单位,所以你需要增加char*,而不是int*。

data.insert( data.end(), (char*)&i,  (char*)(&i)+size );

关于c++ - 使用 std::vector 作为数据缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34203733/

相关文章:

c++ - argc 和 argv 的目的是什么?

c++ - 即使存在转换,也无法将子类模板转换为基类的另一个模板

c++ - 单词之间的摩尔斯电码空格问题

c++ - 是否可以使用 std::pair 作为 std::set 的键而没有任何重复的每个元素?

c++ - 迭代器与反向迭代器

c++ - QT QTextBrowser 左键单击时禁用写入位置

c++ - 试图理解为什么在赋值运算符之后调用类析构函数

c++ - 在 std::vector::resize 和 std::vector::push_back 中摊销

c++ - 在 map 中使用 vector 时出错

c++ - std::vector 比 std::unordered_set 更快?