如何在不使用提取运算符的情况下计算 txt 文件中的数字数?
How to count number of numbers in a txt file without using the extraction operator?
我有一个名为 '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 中提取任何内容的情况下计算数字?
这是一项不允许我使用向量的学校作业。
您可以关闭文件然后重新打开。或者您可以清除文件结尾标志并返回开头。
myfile.clear();
myfile.seekg(0); // rewind the file to the beginning
我有一个名为 '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 中提取任何内容的情况下计算数字?
这是一项不允许我使用向量的学校作业。
您可以关闭文件然后重新打开。或者您可以清除文件结尾标志并返回开头。
myfile.clear();
myfile.seekg(0); // rewind the file to the beginning