CFileDialog dlg(true,_T("map"),_T("*.map"));
CString strPath;
if(dlg.DoModal()==IDOK)
{
//获取文件路径
strPath=dlg.GetPathName();
if(strPath.Right(4)!=L".map")
strPath+=L".map";
int len = WideCharToMultiByte(CP_ACP, 0, strPath, -1, NULL, 0, NULL, NULL);
char* filepath = new char[len + 1];
//memset(filepath, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0,strPath, -1, filepath, len, NULL,NULL);
ReadMap(filepath);
}
void ReadMap(const char* filepath)
{
//将文件中的数据读取到数组m_map中
ifstream ifs(filepath);
ifs>> m_mapSizeX >> m_mapSizeY;
m_map = (int**)calloc(m_mapSizeY,sizeof(int*));
int x,y;
for(y=0;y<m_mapSizeY;y++)
{
m_map[y] = (int*)calloc(m_mapSizeX,sizeof(int));
for(x=0;x<m_mapSizeX;x++)
{
//将数据读入地图数组
ifs>>m_map[y][x];
}
}
ifs.close();
}
该博客介绍了如何使用VC++通过CFileDialog打开.map文件,然后读取其内容并存储到二维整数数组中。通过检查文件路径,确保文件扩展名为.map,接着使用ifstream进行文件读取,逐行读取数据到动态分配的二维数组m_map中。
1033

被折叠的 条评论
为什么被折叠?



