В настоящее время я программирую программу, используя алгоритм a-star. Поэтому я генерирую случайный лабиринт и сохраняю его в .txt-файле. Файл выглядит как это:Считать целые числа в файле и скопировать в динамический массив
19999999199999991
19191119111919191
где 1
является стеной, и 9
это пустое пространство.
Теперь я должен прочитать файл в программе поиска , которая берет файл и считывает его в массив. Затем программа вычисляет кратчайший путь.
Когда я просто копирую целые числа файла в исходный код, все работает нормально. Но теперь я хочу сделать программу более динамичной, поэтому; Я хотел бы прочитать в файле, вычислить необходимый размер массива и сразу сохранить целые числа в массиве.
Моя большая проблема теперь в том, что я не знаю, как читать в файле и получить размер лабиринта.
Для моих функций мне нужно было бы рассчитать количество строк и столбцов в файле, сгенерировать массив и сохранить целые числа в массиве, но я не знаю, как это сделать. Одна из моих проблем заключается в том, что целые числа не разделяются пробелом, и я не могу изменить свою программу, которая генерирует файл.
Я уже знаю, как открыть файл, но;
- Как получить размер файла (число целых чисел в строке и количество строк) и;
- Как я могу хранить целые числа отдельно в массиве?
Edit:
Так что я обновил свою программу со следующим кодом:
main
{
ifstream myfile("BLOCK_style_maze.txt");
string line;
int colCount=0;
int rowCount=0;
int temp=0;
if(myfile.is_open())
{
if(getline(myfile,line))
{
rowCount++;
int i=0;
for(i=0;i<line.length();i++)
{
if(line.at(i)=='1' || line.at(i)=='9') colCount++;
}
}
while(getline(myfile, line))
{
rowCount++;
}
cout << "R:"<< rowCount << "C:" << colCount << endl;
myfile.close();
}
else
{
cout << "Unabale to open maze file";
}
MAP_WIDTH = colCount;
MAP_HEIGHT = rowCount;
map=new int [MAP_WIDTH*MAP_HEIGHT];
int k=MAP_WIDTH*MAP_HEIGHT;
int j=0;
if (myfile.is_open())
{
while(myfile >> temp)
{
map[j++] = temp;
}
}
for(int i=0; i<=k; i++)
{
cout << map[i]<< endl;
}
}
Чтобы проверить код, который я хотел напечатать элементы матрицы отображения на консоли, но Я просто получаю 0
как выход. Поэтому я немного смущен тем, что делаю неправильно.
станд :: вектор ваш жареное. Вам не нужно рассказывать ему размер ничего, и это просто ... работает: D – SlySherZ