私はC++を学んでおり、セグメンテーションフォルトに問題があります。私のプロジェクトでは、Fileからcharの2d Vectorに読み込みたいと思っています。 ベクターは、これは私の読み取りファイル機能とpush_back
によってデバッガ(私はGDBを使用)と言うでセグメンテーションフォールトであるstd::vector<std::vector<char>> gamearea;
2dベクトルのpush_backのセグメンテーションフォルト
void Structure::readFile(const std::string filename)
{
std::ifstream file(filename.c_str());
if (!file.is_open())
{
std::cerr << "Error opening file: " << filename << std::endl;
exit(1);
}
std::string line;
int i = 0;
while (true)
{
std::getline(file, line);
if (file.eof())
{
break;
}
for (size_t j = 0; j< line.length(); j++)
{
gamearea[i].push_back(line[j]);
}
i++;
}
}
です。
誰かが私を助けることができますか?私は問題を見つけることができません。あなたは、まず、第1ベクターにプッシュバックする必要が
'gameArea [i] .push_back(行[j])'これを 'gameArea.at(i).push_back(行[j])'に変更します。 'out_of_range'例外が発生します。つまり、 'i'は無効なインデックスであるため、' gameArea [i] 'はありません。 – PaulMcKenzie
私は無効なインデックスで、何を変更する必要があるのか説明できますか?ゲームエリアの行をベクタに保存したい、他の機能では、図やボックスのようなゲーム内のものの正確な位置が必要です。私は行と一緒に私は言うことができると思ったとライン[j]は、文字の行と列を知るようにベクトルの文字を保存します。 – Lisa