为什么它只"see's"第一行?

  • 本文关键字:一行 see c++
  • 更新时间 :
  • 英文 :


所以我一直在尝试做一个简单的程序来计算有多少"au"在一篇课文中。遇到了一个问题,当一切似乎都在工作,除了它停止计数后的第一行。

程序如下:

#include <iostream>
#include <fstream>
using namespace std;
int au ();
int main(){
cout << au() <<endl;
return 0;
}
int au ()
{
ifstream in("duom.txt");
char a='a';
char u='u';
int n=0;
char t, t1;
while (!in.eof())
{
in.get(t);
in.get(t1);
if (t==a&&t1==u) n++;
}
in.close();
return n;
}

照片查看结果

简单的答案是每次读取2个字符(2 in.get())所以基本上是这样读取文件:

给定文件中的abcaud,您读取abcaud


问题是,在读取文件时,您读取2个字符,检查它们是否匹配,然后读取下一个。这样你读取位置0和1的字符,然后是2和3,以此类推,而你应该读取位置0和1的字符,然后是1和2,以此类推。如果您检查,您将发现只有当a出现在偶数位置时,您才能找到字符串au

用我上面给你的例子,

你读的是
abcaud
而应该是
abbccaauud

最新更新