3

我想知道如何将二维向量输出到值之间有空格的文件。它是以用户选择的指定大小将映射写入文件。我已经从那里动态加载地图。我有该功能的基础,但接下来我有点迷失了。

void Map::SetMapSize(int sizeX, int sizeY, const char *filename)
{
    std::ofstream out(filename);
    out << "[Map]" << std::endl;
    MapSizeVector[sizeX][sizeY];

    for(int i = 0; i <= sizeX; i++)
    {
        for(int j = 0; j <= sizeY; j++)
        {
            std::ostream_iterator<std::string> output_iterator(out, " ");
        }
    }
}

Map.txt 如下所示:

[Map]
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0
0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0
0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 
0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0
0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

它下面还有一些细节。基本上,我想将该 [Map] 部分重写为用户在 [Details] 上方请求的任何大小 x 和 y 并替换现有的 [Map] 部分。数字为 0 很好。谢谢!

Map.h 中的向量声明

std::vector <std::vector <int> > MapSizeVector;
4

1 回答 1

2

您的函数应如下所示:

void Map::SetMapSize(int sizeX, int sizeY, const char *filename)
{
    std::ofstream out(filename);
    out << "[Map]" << std::endl;
    MapSizeVector.resize(sizeX);

    for(int i = 0; i < sizeX; i++)
    {
        MapSizeVector[i].resize(sizeY);
        for(int j = 0; j < sizeY; j++)
        {
            char str[20];
            sprintf(str, "%d ", MapSizeVector[i][j]);
            out << str;
        }
        out << '\n';
    }
}
于 2012-12-29T13:52:58.300 回答