【发布时间】:2017-03-31 16:25:34
【问题描述】:
我有一个字节数组定义为:
unsigned char * pixels = new unsigned char[pixelsLen];
我想将此数组中的所有字节写入.bmp 文件。
这是不行的:
ifstream screen ( "input.bmp", ios::binary | ios::in );
ofstream output ( "output.bmp", ios::binary | ios::out | ios::app );
output.write( ( char * )&pixels, pixelsLen );
output.close();
这就是它的工作原理:
ifstream screen ( "input.bmp", ios::binary | ios::in );
ofstream output ( "output.bmp", ios::binary | ios::out | ios::app );
for ( size_t i = 0; i < pixelsLen; i++ ) {
output.write( ( char * )&pixels[i], 1 );
}
output.close();
问题是为什么它在我逐字节写入时有效,而在我尝试一次写入时无效?
【问题讨论】:
-
从第二个示例看起来像
pixels已经是一个指针或数组。( char * )&pixels的几率非常高,您不希望在第一个示例中出现&。 -
注意
&pixels返回一个指向指针的指针,你为什么要那个?