特定の形式のデータ ファイルから読み取るアプリケーションを作成しています。このファイルでは、ベクター オブジェクトへのポインターの 2D 配列を動的に作成しました。基本的に、ファイル全体を読み取り、特定の文字列パターンを見つけると停止して読み取ります
while(getline(inputFile,tempTestString)){
// first for ACCEL
if(string::npos != tempTestString.find(ACCEL)){
sstream.str(tempTestString);
sstream >> pushBack;
cout << "position 1" << endl;
array[tempDim1][tempDim2].vectorName->push_back(pushBack);
cout << "position 2" << endl;
break;
}
}
現在、pushBack は大きな数であり、最大 20000 になる可能性がありますが、ファイルによって異なります。
このコードの問題は、実行時エラーや例外がスローされないことです。エラーをキャッチしようとしました。プログラムは簡単に終了します。確かに、行と後者の印刷物を追加しましcout << "position1" << endl;
たcout << "position2" << endl;
。
あなたが推測していない場合:
tempTestString
およびACCEL
- 文字列オブジェクト
sstream
- 文字列ストリーム オブジェクト
array
- 動的メモリ内の 2D 構造体配列
vectorName
- ベクトル オブジェクトへのポインタ、ポインタが指す構造体のメンバarray
補遺:
したがって、いくつかのコメントに応えて、すべての変数が作成されたコードの他の部分を次に示します。
配列
array = new structName* [tempDim1];
for(int i = 0; i < tempDim2; i++){
array[i] = new structName [tempDim2];
}
構造体名
struct structName{
vector<double>* vectorName;
vector<double>* vectorName1;
vector<double>* vectorName2;
};
tempDim1 と tempDim2 は両方ともconst ints
、それぞれ値 2 と 3 です。pushBack には最大 20000 の値を指定できます