小编Ros*_*oss的帖子

如何在C++中只将常量间隔的项目从char缓冲区写入磁盘

如何在char缓冲区中只编写每三个项目以便在C++中快速编写文件?

我从相机中获得了三通道图像,但每个通道包含相同的信息(图像为灰度).我想只写一个通道到磁盘以节省空间并使写入更快,因为这是实时数据采集系统的一部分.

C++的ofstream :: write命令似乎只编写连续的二进制数据块,因此我的当前代码会写入所有三个通道并且运行速度太慢:

char * data = getDataFromCamera();
int dataSize = imageWidth * imageHeight * imageChannels;
std::ofstream output;
output.open( fileName, std::ios::out | std::ios::binary );
output.write( data, dataSize );
Run Code Online (Sandbox Code Playgroud)

我希望能够通过以下呼叫替换最后一行:

int skipSize = imageChannels;
output.write( data, dataSize, skipSize );
Run Code Online (Sandbox Code Playgroud)

其中skipSize会导致write只将每三分之一放入输出文件中.但是,我还没有找到任何能够做到这一点的功能.

我很想听听有关将单个频道快速写入磁盘的任何想法.谢谢.

c++ file-io

4
推荐指数
2
解决办法
437
查看次数

标签 统计

c++ ×1

file-io ×1