复制到矩阵的二进制文件行

Fle*_*seo 3 c++

我想将矩阵的每一行写入二进制文件.我尝试这样写:

vector< vector<uint32_t> > matrix;
Run Code Online (Sandbox Code Playgroud)

...

for(size_t i = 0; i < matrix.size(); ++i)
ofile->write( reinterpret_cast<char*>(&matrix[i]), sizeof(uint32_t*sizeof(matrix[i])) );
{
    for(size_t j = 0; j < numcols; ++j)
    {
        std::cout << left << setw(10) << matrix[i][j];
    }
    cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我得到垃圾数字.

任何帮助,赞赏,

特德.

int*_*jay 5

一些问题:

  1. &matrix[i]会给你一个指向vector<uint32_t>对象的指针.如果你想要一个指向该向量的包含数据的指针,请使用&matrix[i][0].

  2. sizeof(matrix[i])是矢量对象本身的大小,而不是其内容.使用matrix[i].size()获得的元素数量.

  3. 而不是sizeof(uint32_t * x),使用sizeof(uint32_t) * x.

  4. 第二个for循环实际上并没有嵌套在第一个for循环中.你需要重新安排你的大括号.