这是一个计算字符串有多少字母和数字的程序,但是当我在输入后按Enter退出时,它没有响应。
#include <iostream>
using namespace std;
int main()
{
char c;
int nums=0,chars=0;
while(cin>>c){
if(c>='0'&&c<='9'){
nums++;
}else if((c>='A'&&c<='Z')||(c>='a'&&c<='z')){
chars++;
}
}
printf("nums:%dnchars:%d",nums,chars);
return 0;
}
按回车键不终止std::cin
的输入,std::cin
遇到空格时停止输入。
最好使用std::getline
和std::isdigit
,如下所示:
int main()
{
int nums=0,chars=0;
std::string input;
//take input from user
std::getline(std::cin, input);
for(const char&c: input){
if(std::isdigit(static_cast<unsigned char>(c))){
nums++;
}
else if(std::isalpha(static_cast<unsigned char>(c))){
chars++;
}
}
std::cout<<"nums: "<<nums<<" chars: "<<chars;
return 0;
}
演示