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
#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