C++ 中的标准输入与我的循环

Standard input in C++ with my loop

#include <iostream>
#include <string>
using namespace std;

int main() {
   char c;
   cout << "enter the word.";
   cin >>  c;
   int count =0;

    while (c !='.') {
       if (c == 'b') count = count + 1;
       cin >> c;
   }

    cout << count << endl;
    return 0;
}; 

当我编译代码时,它接受单词,但之后,不计算计数。

例如:

./d6
enter the wordbanana

然后我什么都没有,我又加了几个字,为什么?

您的代码运行良好。
问题可能出在您的输入字符串中。如果您输入一些末尾没有 '.' 字符的字符串,您的代码将陷入无限循环。它不会打印 count 变量。

并且return 0放在适当的位置。

您需要包含一个“.”字符以结束循环。 return 0;似乎应该在哪里,除非你不使用标准 C++。

逻辑上正确的选择

#include <bits/stdc++.h>
using namespace std;

int main() {
    string line;
    getline(cin, line);
    size_t ans, dot = line.find_first_of('.');
    if (dot != string::npos)
        ans = count(line.begin(), line.begin() + dot, 'b');
    else
        ans = count(line.begin(), line.end(), 'b');
    cout << ans << endl;
    return 0;
}

输入

banana

输出

1

查看http://ideone.com/j7b5x4演示