问题描述
程序意图是计算输入流中“ff”字符的数量,程序如下:
#include <iostream>#include <string>using namespace std;int main(){ int Cnt=0; bool flag = false; string s; while (cin>>s)for(auto ch:s) switch (ch) {case ’f’: if (flag == true)++Cnt; flag = true; break;default: flag = false; break; } cout << 'There are '<< Cnt << ' ff(s).' << endl; return 0;}
问题在于我输入f f(中间有空格,所以不算计数),输出仍然是1,怎么回事?
问题解答
回答1:cin读到空格会认为输入结束,所以你的 f f 实际上接收之后还是ff吧
回答2:cin在ostream类中的三个输入方法不一样,cin类是从程序的输入缓冲队列中一个个读取字符。根据接受数据类型不同来判断字符的结束点。
cin >> x, 忽略空格和回车认为输入结束
cin.get()和cin.getline(), 不忽略空格

