多くの数値を計算するプログラムがありますが、RAM メモリがデータに対して十分に大きくないため、データを配列に格納できません。そこで、データを .txt ファイルに入れるコードを少し書きました。同じプログラムで、openGL/GLUT を使用してデータを表示するために、1 つずつロードし直す必要があります。
.txt ファイルは次のようになります。
number1;number 2;number3;number4;......number N;
number1;number 2;number3;number4;......number N;
number1;number 2;number3;number4;......number N;
...................................................................................
number1;number 2;number3;number4;......number N;
番号 N の後に注意してください。"\n" (入力) が来ます。そして、1 行の長さは 2500 桁です。
データを 1 行ずつロードする必要があるため、使用しますgetline();
が、すべてのフレームには次の行が必要です。
少し単純化するために、読むコードは次のとおりです。
ifstream file("example.txt", ifstream::in);
if(file.is_open())
{
getline(file, b);
cout<<b<<"\n"<<"\n";
file.close();
}
このコードは実際のプログラムのコードではありませんが、問題を示しています。
ここでのコードは正常に動作し、最初の行をロードしてコンソール画面に表示するだけです。そして、openGLの各フレームでそれを行います。そのため、opengl が新しいフレームを開始するたびに、コンソール画面が継続的に更新されます。
しかし、これを追加すると:
ifstream file("example.txt", ifstream::in);
if(file.is_open())
{
getline(file, b);
strcpy(resultch, b.c_str());
cout<<b<<"\n"<<"\n";
file.close();
}
(resultch が次char* resultch = new char[2550];
のように宣言されている場合:) コードは 1 回だけ実行され、プログラムはその後停止します。コンソール画面には次のように表示されます。
proces returned -1073741819 <0x0000005>
毎回正しく実行されないのはなぜですか?