vectorの二次配列についてどうしても思い通りに処理できないので質問させて下さい。
map0.datというファイルからデータを読み込み、行ごとにカンマ(,)で分割して二次配列に格納しようとしています。
map.datの中身は以下のようになっており、1行目がマップ横幅、2行目がマップ縦幅になっています。
1行目2行目のマップ幅を読み取るとこまでは成功し、出力して確認しております。
しかしながら2次配列への格納がうまくいきません。
処理部のコードは以下です。
//マップデータを外部ファイルから配列に読み込む
ifstream dat("./dat/map0.dat");
if (!dat) {
exit(1);
}
string mw; getline(dat, mw); // ファイル1行目から横幅を読み取る
map_width = atoi(mw.c_str());
string mh; getline(dat, mh); // ファイル2行目から縦幅を読み取る
map_height = atoi(mh.c_str());
map_data.resize(map_height);
for (int i = 0; i < map_height; i++) {
map_data[i].resize(map_width);
}
vector<int> line_array;
string line_buf;
while (getline(dat, line_buf))
{
istringstream stream(line_buf);
string tmp;
while (getline(stream, tmp, ','))
{
line_array.push_back(atoi(tmp.c_str()));
}
map_data.push_back(line_array);
line_array.clear();
}