我目前正在使用a-star算法編程一個程序。因此,我生成一個隨機迷宮並將其保存在.txt文件中。該文件看起來有點像這樣:計算文件中的整數並複製到動態數組
19999999199999991
19191119111919191
其中1
是一堵牆,和9
是一片空白。
現在我必須將該文件讀入findpath程序,該程序將該文件讀取到數組中。然後程序計算最短路徑。
當我只是將文件的整數複製到源代碼一切工作正常。但是現在我想讓這個程序更加動態化,因此;我想讀取文件,計算所需的數組大小,並將整數存儲在數組中,一次完成。現在
我的大問題是,我不知道如何在文件中讀取並獲得迷宮的大小。
對於我的功能,我將不得不計算行數和列數的文件中,生成的陣列和整數存儲在陣列中,但我沒有線索如何做到這一點。我的一個問題是整數不能被空格分開,而且我不能更改生成文件的程序。
我已經知道如何打開該文件,但;
- 如何獲取文件的大小(一行中的整數數量和行數)以及;
- 如何將整數分別存儲在數組中?
編輯:
所以我更新我的程序用下面的代碼:
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
作爲輸出。所以我有點困惑我做錯了什麼。
的std ::矢量你炒。你不需要告訴他任何東西的大小,它只是....作品:D – SlySherZ 2014-10-31 12:35:29