我目前正在使用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