0

どうすればいいですか?数字をチェックしたい

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

length1 つの方法は、string には関数があるため、char の代わりに string を使用することです。

このように:

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

'\0'char を使用する必要がある場合は、文字列の末尾を表す値をチェックするだけで簡単に実行できます。

私のアプローチは、文字列を使用してその長さを取得し、c_str()関数を使用して文字配列に変換することです。

于 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!";

または、10進数を認識するために、これを試すことができます:

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 に答える