Al tratar de llegar a una respuesta a this question, escribí esta pequeña prueba-programa:¿Está bien usar iostreams con int como character-type?
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <algorithm>
void writeFile() {
int data[] = {0,1,2,3,4,5,6,7,8,9,1000};
std::basic_ofstream<int> file("test.data", std::ios::binary);
std::copy(data, data+11, std::ostreambuf_iterator<int>(file));
}
void readFile() {
std::basic_ifstream<int> file("test.data", std::ios::binary);
std::vector<int> data(std::istreambuf_iterator<int>(file),
(std::istreambuf_iterator<int>()));
std::copy(data.begin(), data.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
int main()
{
writeFile();
readFile();
return 0;
}
Funciona como se esperaba, la escritura de los datos en el archivo, y después de leer el archivo, se imprime correctamente:
0 1 2 3 4 5 6 7 8 9 1000
sin embargo, no estoy seguro de si hay trampas (cuestiones endianess un lado, que siempre tienen estos cuando se trata de datos binarios)? Está permitido?
Hm, eso confirma mi sospecha. –
Eso significa que si realmente lo quiero, podría especializar 'char_traits' para' int'. –
+1, aunque creo que es bastante obvio lo que se espera. –