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不能多次使用。当我想多次读取文件时,有必要从上一次读取的末尾开始读取。

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);

will return mfile,其中while(mfile)will 被隐式转换为 a bool,因此有效地迭代直到无法再读取任何字符串,通常在文件末尾。

于 2013-03-27T18:39:31.193 回答