我只需要写一个函数来计算一个已经打开的好的文本文件中的整数个数。
a.假设有一个文本文件,其中包含大量的整数并被空格分隔
B.编写一个名为analyzeFile的函数,该函数接受先前打开的ifstream文件对象作为参数,并计算文件中的整数数量。
c.它不需要对整数做任何事情,但是它必须精确地计算文件中整数的正确数目,并将该数目返回给调用函数。
d.它也不需要操纵文件操作本身,因此它不需要关闭文件或进行任何其他动作,除了计数整数并返回它们的数目。
谢谢你在我的问题上的任何帮助!
**编辑:**以下是我作为函数所做的工作,是否正确,我不知道:
int analizeFile (ifstream &inf, const string &fileName) {
int count = 1;
int num;
fin.open(fileName.c_str() );
fin >> num;
while (fin.good() ) {
fin>> num;
count ++;
}
return count;
}
3条答案
按热度按时间kgqe7b3p1#
备注:
由于计数总是一个非负的量,我更喜欢使用
size_t
而不是int. Nit:您可能需要将函数的名称更改为analyzeFile
。问题从这里开始:如果文件中没有任何整数,则返回错误的结果。
不需要调用
open
。这通常由ifstream
ctor调用。同样,这不是必需的,您可以从流中提取并在
while
条件下测试--这是更常用的条件。5t7ly7z52#
您也可以使用函数方法
如果迭代器不能读取整数,它将在流上设置失败状态,并与结束迭代器进行比较。
distance
然后返回到达结束迭代器所用的迭代步数。vd8tlhqk3#
很多很多年后,你可以想出一个更现代的解决方案。
您可以简单地使用
std__map
或std::unordered:map
等关联容器进行计数,这或多或少是标准方法。然后有许多许多新的和强大的功能可用。
利用这些,你可以得出一些类似的结论: