我想将矩阵的每一行写入二进制文件.我尝试这样写:
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)
但它不起作用,我得到垃圾数字.
任何帮助,赞赏,
特德.
一些问题:
&matrix[i]
会给你一个指向vector<uint32_t>
对象的指针.如果你想要一个指向该向量的包含数据的指针,请使用&matrix[i][0]
.
sizeof(matrix[i])
是矢量对象本身的大小,而不是其内容.使用matrix[i].size()
获得的元素数量.
而不是sizeof(uint32_t * x)
,使用sizeof(uint32_t) * x
.
第二个for
循环实际上并没有嵌套在第一个for
循环中.你需要重新安排你的大括号.
归档时间: |
|
查看次数: |
199 次 |
最近记录: |