2010-09-17 14 views
5

Actualmente tengo un programa que carga los datos binarios en un stringstream y luego paSES los datos a un fstream así:¿Cómo copiar datos binarios de una secuencia a otra?

stringstream ss(stringstream::binary | stringstream::in | stringstream::out); 
ss.write(data, 512); // Loads data into stream 

// Uses a memory block to pass the data between the streams 
char* memBlock = new char[512]; 
ss.read(memBlock, 512); 

ofstream fout("someFile.bin", ios::binary); 
fout.write(memBlock, 512); // Writes the data to a file 
fout.close(); 

delete[] memBlock; 

Mi pregunta es: ¿hay una mejor manera de pasar los datos binarios entre las corrientes?

Respuesta

13

Utilice los streambuf miembros, que es lo que son para:

fout << ss.rdbuf(); 
+0

NO ES "operador <<" para la entrada formateado? estoy trabajando con datos binarios. – Fabi1816

+0

@ Fabi1816: hay una sobrecarga para 'streambuf' que genera salida binaria. Esta sobrecarga está aquí para hacer exactamente lo que solicite aquí. –

+4

Esto es funcionalmente correcto. He encontrado que copiar datos con flujos de C++ es 2-3 veces más lento que usar los métodos de estilo C publicados anteriormente. Para mi molestia. – Stephen

Cuestiones relacionadas