3

値の間にスペースがあるファイルに 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 での vector の宣言

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 に答える