所以我一直在尝试做一个简单的程序来计算有多少"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
,您读取ab
ca
ud
问题是,在读取文件时,您读取2个字符,检查它们是否匹配,然后读取下一个。这样你读取位置0和1的字符,然后是2和3,以此类推,而你应该读取位置0和1的字符,然后是1和2,以此类推。如果您检查,您将发现只有当a
出现在偶数位置时,您才能找到字符串au
。
用我上面给你的例子,
你读的是ab
ca
ud
而应该是ab
bc
ca
au
ud