1

text_file を使用して多数の数値を格納するプログラムがあります。これらの数値をロードする必要があるときは、一度に 2500 の数値をロードする必要があります。何度も何度もロードするwhileループがあります...

今、私が推測するwhileループで問題が発生します。

ifstream mfile("abc.txt", ifstream::out);
if(mfile.is_open())
{
    getline(mfile, b);
    char* ch = new char[b.length() + 1];
    strcpy(ch, b.c_str());
    result = atof(strtok (ch,";"));
    while(i<125)
    {
        cout<< strtok (NULL,";")<<" ";
        i++;
    }
    i=0;
}
else
{
    cout<<"probleem";
}
mfile.close();

これは、問題となっているより複雑なコードの短くて単純な例です。

このコードは while ループ内にある必要があることに注意してください。

しかし、おそらくmfile複数回使用できないため、コードは 1 回しか実行されません。ファイルを複数回読み取りたい場合は、前回の読み取りの最後から読み取りを開始する必要があります。

4

1 に答える 1

1
  ifstream mfile("abc.txt", ifstream::out);  // why out ??

--->

  ifstream mfile("abc.txt");
  if(mfile.is_open())
 {  while(getline(mfile, b))
    {   char* ch = new char[b.length() + 1];
        strcpy(ch, b.c_str());
        result = atof(strtok (ch,";"));
        while(i<125)
        {    cout<< strtok (NULL,";")<<" ";
          i++;
        }
        i=0;
    }
 }
 else     {     cout<<"probleem";      }
 mfile.close();

streampos tellg();との組み合わせを使用することもできます。seekg(pos)

編集:

istream& getline (istream& is, string& str);

は を返しmfile、その内部はwhile(mfile)暗黙的に に変換されるためbool、通常はファイルの終わりまでに、それ以上文字列を読み取ることができなくなるまで効果的に反復します。

于 2013-03-27T18:39:31.193 に答える