如何在不使用提取运算符的情况下计算txt文件中的数字数量?

时间:2019-02-14 17:05:00

标签: c++ c++11 fstream ifstream

我有一个名为“ sample.txt”的txt文件,其数据格式为

  

1.0

     

2.1

     

abc

     

4.2

我想从txt文件中提取数字1.0、2.1、4.2,并忽略字符串“ abc”。

在提取数据之前,我想首先准确地计算一下txt文件中有多少个数字。

因为我想将数字提取到动态数组中,所以我需要知道首先要创建多少数组。

我用于计算txt文件中数字数量的代码是

ifstream myfile; 
myfile.open ("sample.txt"); 

int dataCount = 0;  // to count number of numbers

while (!myfile.eof())
{
    double x;         
    myfile >> x;    

    if (myfile.fail()) // no extraction took place
    {
        myfile.clear(); 
        myfile.ignore(numeric_limits<streamsize>::max(), '\n'); 
        continue;  // do nothing and start reading next data
    }

    // Count up if x successfully extracted
    dataCount++;
}

所以现在我完成了对数字的计数,但是ifstream myfile中也没有剩下要提取的内容。无论如何,是否可以在不从ifstream myfile中提取任何内容的情况下对数字进行计数?

这是用于不允许我使用引导程序的学校作业。

1 个答案:

答案 0 :(得分:3)

您可以关闭文件然后再次打开。或者,您可以清除文件末尾标志,然后找回开头。

myfile.clear();
myfile.seekg(0); // rewind the file to the beginning