0

how do I do this? i want it to check for numbers

cout<<"Enter your first number: ";
std::cin >> dblNumOne;
int i=0;
char str[]=dblNumkOne;
while (str[i])
{
    if (isalpha(str[i])) printf ("character %c is alphabetic\n",str[i]);
    else printf ("character %c is not alphabetic\n",str[i]);
    i++;
}
4

4 回答 4

2

很简单,只需像这样遍历 std::string :

std::string dblNumOne;
std::cin >> dblNumOne;

for(unsigned int i = 0; i < dblNumOne.length(); i++)
{
    if (isalpha(dblNumOne[i]))
    {
        printf ("character %c is alphabetic\n", dblNumOne[i]);
    }
    else
    {
        printf ("character %c is not alphabetic\n", dblNumOne[i]);
    }
}
于 2013-09-13T02:44:09.693 回答
0

一种方法是使用字符串而不是字符,因为字符串有一个length功能

像这样:

std::string dblNumOne;
std::cout<<"Enter your first number: ";
std::cin >> dblNumOne;
std::cout << dblNumOne.length() << endl;

如果您必须使用 char,那么您只需检查'\0'代表字符串结尾的值即可。

我的方法是使用字符串并获取它的长度,然后使用c_str()函数将其转换为 char 数组。

于 2013-09-13T02:44:12.663 回答
0

1)将字符串转换为char数组:

strcpy(charArray,stringArray.c_str());

来源:http: //v2.cplusplus.com/forum/windows/71633/

2)打印出它是否是数字使用isdigit

while (charArray[i]) {
    if (isdigit(charArray[i])){
        printf ("character %c is a digit\n",str[i]);
    } else {
        printf ("character %c is not a digit\n",str[i]);
    }
    i++;
}

如果它回答了您的问题或引导您找到答案,请记住单击我的答案左侧的灰色复选标记(✓)!

于 2013-09-13T02:44:24.353 回答
0

如果你想检查数字,你可以试试这个:

std::string str = "";
std::cout<<"enter string>>";
std::cin>>str;

int is_number = 0; 
char filter[] = "0123456789";

for(int n=0; n<str.size(); ++n){
   for(int i=0; i<10; ++i){

      if(str[n] == filter[i]){
          ++is_number;
          break; // found match, filter next char in str
      }else if(str[n] != filter[i] && i == 9){
          std::cout<<"'"<<str[n]<<"' is not a digit!\n";
      }
   }
}

if(is_number == str.size()){
    std::cout<<"You entered a number";
}else std::cout<<"You didn't enter a number!";

或识别十进制数字,你可以试试这个:

int is_number = 0, is_decimal = 0; 
char filter[] = ".0123456789";

for(int n=0; n<str.size(); ++n){
   for(int i=0; i<11; ++i){

      if(str[n] == filter[i]){
          if(filter[i] == '.'){
            ++is_decimal;
          }
          ++is_number;
          break;
      }
   }
}// for decimal

if(is_number == str.size() && is_decimal <= 1){
    std::cout<<"You entered a number";
}else std::cout<<"You didn't enter a number!";
于 2013-09-13T03:02:48.547 回答