Я делал функцию для чтения файла, содержащего некоторые сброшенные данные (последовательность значений из 1 байта). Поскольку сбрасываемые значения составляли 1 байт каждое, я читал их как символы. Я открыл файл в двоичном режиме, прочитал данные как символы и произвел приведение к int (так что я получил коды ascii). Но данные читаются не правильно (по сравнению в hex-редакторе). Вот мой код:
int** read_data(char* filename, int** data, int& height, int& width)
{
data=new int*[height];
int row,col;
ifstream infile;
infile.open(filename,ios::binary|ios::in);
if(!infile.good())
{
return 0;
}
char* ch= new char[width];
for(row=0; row<height; row++)
{
data[row]=new int[width];
infile.read(ch,width);
for(col=0; col<width; col++)
{
data[row][col]=int(ch[col]);
cout<<data[row][col]<<" ";
}
cout<<endl;
}
infile.close();
return data;
}
Есть идеи, что может быть не так с этим кодом?
У меня машина windows, я использую Visual Studio 2005 и (точное) имя файла, которое я передал:
"D:\\files\\output.dat"
РЕДАКТИРОВАТЬ : Если я не использую unsigned char, первые 8 значений, которые все 245, читаются как -11.