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

C++ 如何在不使用提取运算符的情况下计算txt文件中的数字数?,c++,c++11,fstream,ifstream,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 n

我有一个名为“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++;
}
ifstreammyfile;
myfile.open(“sample.txt”);
int dataCount=0;//数数
而(!myfile.eof())
{
双x;
myfile>>x;
if(myfile.fail())//未进行提取
{
myfile.clear();
忽略(数值限制::max(),'\n');
继续;//不执行任何操作,然后开始读取下一个数据
}
//如果x成功提取,则计数
dataCount++;
}
因此,现在我已经完成了数字的计数,但是ifstream myfile中也没有任何内容可供我提取。是否仍然可以在不从ifstream myfile提取任何内容的情况下计算数字


这是一个学校作业,不允许我使用向量。

您只需关闭文件并再次打开即可。或者,您可以清除文件结束标志并返回开始

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

使用向量而不是数组,文件中有多少数字都无关紧要。如果它已经是一个动态数组,你不能从一个较小的值开始,然后在它满后,创建一个新的更大的动态数组,从旧数组传输数据并继续(a-la vector push_back)?您可以使用函数“我不允许使用向量”返回到文件的开头。为什么?你是被施虐狂教的吗?问问你的老师,不使用专业程序员经常使用的工具有什么教育意义。当你有那么多有用的话题可以学习和体验时,为什么你不得不学习这些晦涩难懂的指针和内存处理呢。编程很难学,不必刻意增加难度。令人难以置信的是C++教学有多糟糕。