Не зная содержания test.txt, трудно сказать точно, но похоже, что вы постоянно читаете 4 байта (размер int на большинстве платформ) в символьный буфер / строку, а затем пытаетесь превратить этов число.Если ваш файл не состоит полностью из четырехбайтовых блоков с нулевым символом в конце, я бы не ожидал, что это сработает.
Обновление: Хорошо, глядя на формат файла, вы не пишете строки, выписать целые.Поэтому я ожидаю, что вы сможете читать свои цифры сразу, без необходимости atoi
.
Например:
int value;
file.read((char*)&value, sizeof(int));
value
теперь должно содержатьномер из файла.Чтобы преобразовать весь пример, вы ищете что-то вроде этого:
int width = 5;
int height = 5;
int someTile = 1;
ifstream file("test.txt", ios::in|ios::binary);
if(file.is_open())
{
cout << "open";
file.read(reinterpret_cast<char*>(&width), sizeof(int));
file.read(reinterpret_cast<char*>(&height), sizeof(int));
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
file.read(reinterpret_cast<char*>(&someTime), sizeof(int));
cout << someTile;
}
}
}