C++ 计算文本文件中整数数的函数?
我只需要写一个函数,计算一个已经打开的好文本文件中的整数数 a。假设有一个包含大量整数除以空格的文本文件 b。编写一个名为analyzeFile的函数,该函数接受以前打开的ifstream 文件对象作为参数,并计算文件中的整数数 c。它不需要对整数做任何处理,但必须精确地计算整数 更正文件中的整数数,并将该数返回给调用 功能 d。它也不需要操纵文件操作本身,因此它不需要 需要关闭文件或执行除计算整数以外的任何其他操作 并返回它们的数量 谢谢你对我问题的任何帮助 编辑:C++ 计算文本文件中整数数的函数?,c++,file-io,C++,File Io,我只需要写一个函数,计算一个已经打开的好文本文件中的整数数 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;
}
评论:
int analizeFile (ifstream &inf, const string &fileName) {
由于计数始终是非负数,因此我更喜欢使用size\u t
而不是int.Nit:您可能希望将函数名更改为analyzeFile
int count = 1;
问题从这里开始:如果您的文件没有任何整数,则返回错误的结果
int num;
fin.open(fileName.c_str() );
无需调用open
。这通常由ifstream
ctor调用
fin >> num;
while (fin.good() ) {
同样,这不是必需的。您可以从流中提取并在while
条件下进行测试,这是更常用的条件
fin>> num;
count ++;
}
return count;
}
评论:
int analizeFile (ifstream &inf, const string &fileName) {
由于计数始终是非负数,因此我更喜欢使用size\u t
而不是int.Nit:您可能希望将函数名更改为analyzeFile
int count = 1;
问题从这里开始:如果您的文件没有任何整数,则返回错误的结果
int num;
fin.open(fileName.c_str() );
无需调用open
。这通常由ifstream
ctor调用
fin >> num;
while (fin.good() ) {
同样,这不是必需的。您可以从流中提取并在while
条件下进行测试,这是更常用的条件
fin>> num;
count ++;
}
return count;
}
您也可以使用功能性方法
// it was previously opened, so you don't need a filename.
int analyzeFile (istream &inf) {
std::istream_iterator<int> b(inf), e;
return std::distance(b, e);
}
//它以前已打开,因此不需要文件名。
int分析文件(istream&inf){
std::i流迭代器b(inf),e;
返回标准::距离(b,e);
}
如果迭代器无法读取整数,它将在流上设置失败状态,并将与结束迭代器进行比较<代码>距离然后返回到达最终迭代器所需的迭代步骤数 您也可以使用功能性方法
// it was previously opened, so you don't need a filename.
int analyzeFile (istream &inf) {
std::istream_iterator<int> b(inf), e;
return std::distance(b, e);
}
//它以前已打开,因此不需要文件名。
int分析文件(istream&inf){
std::i流迭代器b(inf),e;
返回标准::距离(b,e);
}
如果迭代器无法读取整数,它将在流上设置失败状态,并将与结束迭代器进行比较<代码>距离然后返回到达最终迭代器所需的迭代步骤数 向我们展示一些您编写的代码。以及你所面临的任何问题。是的,请公布你到目前为止的情况,以及问题所在。否则,你似乎想让我们为你做功课。这是我目前为止作为一个函数所做的,对吗,我不知道: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;}你能编辑你的问题并添加代码吗?这将有助于将来有此问题的其他人。向我们展示您编写的一些代码。以及你所面临的任何问题。是的,请公布你到目前为止的情况,以及问题所在。否则,你似乎想让我们为你做功课。这是我目前为止作为一个函数所做的,对吗,我不知道: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;}你能编辑你的问题并添加代码吗?这将有助于将来有这个问题的其他人。+1感谢你花时间和精力进行教育,而不是仅仅发布一个解决方案。这篇文章是否对OP进行了教育,这当然是有争议的。在老年退休金计划“课程”的这一点上,我相信一个清晰、简单的例子将提供最大的好处。如果OP已经准备好学习有符号与无符号整数类型和构造函数,那么OP的问题就很明显了。看到一段代码片段,对它的具体功能有着先验知识,这是非常有启发性的!更重要的是,
fin.good()
甚至是错误的。给定此文件内容:“21”,则如果他将count
初始化为0
,他将认为文件中有0
个数字(因为如果设置了eof位,good()
将返回false)。另一方面,如果他将count
初始化为1
,并且内容是“21”,那么他会认为有两个数字,因为在阅读21之后,还没有设置eof或失败位。+1用于花费时间和精力进行教育,而不仅仅是发布解决方案。这篇博文是否教育了OP肯定是有争议的。在老年退休金计划“课程”的这一点上,我相信一个清晰、简单的例子将提供最大的好处。如果OP已经准备好学习有符号与无符号整数类型和构造函数,那么OP的问题就很明显了。看到一段代码片段,对它的具体功能有着先验知识,这是非常有启发性的!更重要的是,fin.good()
甚至是错误的。给定此文件内容:“21”,则如果他将count
初始化为0
,他将认为文件中有0
个数字(因为如果设置了eof位,good()
将返回false)。在另一边,如果他初始化