c++ - switch语句程序中的一个bug,但就是找不出在哪
黄舟
黄舟 2017-04-17 12:09:03
0
2
585

程序意图是计算输入流中“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,怎么回事?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(2)
巴扎黑

cin讀到空格會認為輸入結束,所以你的 f f 實際上接收之後還是ff

Peter_Zhu

cin在ostream類別中的三個輸入方法不一樣,cin類別是從程式的輸入緩衝佇列中一個個讀取字元。根據接受資料類型不同來判斷字元的結束點。

  1. cin >> x, 忽略空格和回車認為輸入結束

  2. cin.get()和cin.getline(), 不忽略空格

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!