c++ - switch语句程序中的一个bug,但就是找不出在哪

浏览:37日期:2023-06-04

问题描述

程序意图是计算输入流中“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(), 不忽略空格

相关文章: