程序意图是计算输入流中“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,怎么回事?
cin讀到空格會認為輸入結束,所以你的
f f
實際上接收之後還是ff
吧cin在ostream類別中的三個輸入方法不一樣,cin類別是從程式的輸入緩衝佇列中一個個讀取字元。根據接受資料類型不同來判斷字元的結束點。
cin >> x, 忽略空格和回車認為輸入結束
cin.get()和cin.getline(), 不忽略空格