在c++中保存2D字符数组到文件

Saving 2D Char arrays to file in C++

本文关键字:数组 文件 字符 2D c++ 保存      更新时间:2023-10-16

所以在我的程序中,我有一个2d字符数组gameField,其中存储了各种字符来表示堡垒,玩家,空白空间和主基地。我试图将这个数组保存到一个文件中,但我试图做的方式似乎并不奏效。这是我的示例代码。

void saveMap()
{
    string userMap = directoryName + username + "-map.txt";
    ofstream savemap(userMap.c_str());
    for (int i = 0; i <= ROWS; i++)
    {
        for (int j = 0;j <= COLUMNS; j++)
        {
            savemap << gameField[i][j];
        }
        savemap << endl;
    }
    savemap.close();
 }

每当我尝试执行这个时,我总是得到运行时错误,我想知道是否有人可以解释为什么,也许提供一个替代方案。

EDIT: gameField是一个字符数组,COLUMNS等于50,ROWS等于30。我有数组中的每一个字符初始化和设置等于什么,但每当我调用函数,我得到一个未处理的异常在0x511cbe20 (msvcr100d.dll)在Game1.exe: 0xC0000005:访问违规读取位置0x30303030.

您正在尝试访问数组之外的内存。例如,行的有效范围是[0,rows - 1]

我将这样写这个函数

void saveMap()
{
   string userMap= directoryName+username+"-map.txt";
   ofstream savemap(userMap.c_str());
   int i = 0;
   while ( i < ROWS && savemap.write( gameField[i++], COLLUMS ) ) savemap << std::endl;
}