将2D矢量写入文件? C ++

时间:2012-12-29 13:14:55

标签: c++ file-io map vector sfml

我想知道如何将2D矢量输出到值之间有空格的文件。它是将地图写入用户选择的指定大小的文件。我已经从那里动态加载地图。我有一个功能的基础,但我有点迷失在下一位。

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;

1 个答案:

答案 0 :(得分: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';
    }
}