2

私はプログラミングの初心者です (特に C++)。文字の着信記号をチェックしようとしました。0 から 9 までの数字だけを「キャッチ」する必要があります。

// Checking "a". If "a" is a letter, the error must be printed;
if (a!='%d') {
    cout << "pfff! U cant use letters!" << endl;
    return -1;
}
// The end of checking;

しかし、うまくいきません。C++ では '%d' を使用できないと思います。どのように私は言うことができます:「すべての記号を確認し、非数字がある場合はプログラムを停止します。」

PS私の英語でごめんなさい。あなたが私を手に入れたことを願っています。

4

5 に答える 5

5

はい、isdigit()ここでうまくいきます。

例は次のとおりです。

    #inlude <iostream>
    #include <ctype.h>
    // in ctype.h is located the isdigit() function
    using namespace std;
    //...
    char test;
    int x;
    cin >> test;
    if ( isdigit(test) )//tests wether test is == to '0', '1', '2' ...
    {
          cin>>putback(test);//puts test back to the stream
          cin >> x;
    }
    else
         errorMsg();
于 2012-10-17T09:59:54.177 に答える
2

isdigit代わりに使用してください。

if (!isdigit(a)) {
    cout << "pfff! U cant use letters!" << endl;
    return -1;
}

あなたのテキストは、coutあなたが探していることを示唆していisalphaます:

if (isalpha(a)) {
    cout << "pfff! U cant use letters!" << endl;
    return -1;
}
于 2012-10-17T09:57:39.583 に答える
2

isdigit()継承された C ライブラリの関数を使用できます。これはヘッダーcctypeにあります。あなたが求めているアルゴリズムのロジックは、入力された文字列を実行し、文字が数字ではない場合に反応することです。

サンプルソースコードは次のとおりです。

#include <iostream>
#include <cctype>
#include <utility>
#include <string>
#include <cstdlib>

int main()
{
    int toret = EXIT_SUCCESS;
    std::string str;

    std::getline( std::cin, str );

    for(unsigned int i = 0; i < str.length(); ++i) {
        if ( !std::isdigit( str[ i ] ) ) {
            std::cerr << "Only digits allowed" << std::endl;
            toret = EXIT_FAILURE;
            break;
        }
    }

    return toret;
}

お役に立てれば。

于 2012-10-17T10:01:37.127 に答える
1

function を使用する必要がありますisdigit

if (!isdigit(a)) {
    cout << "pfff! U cant use letters!" << endl;
    return -1;
}
于 2012-10-17T09:57:19.793 に答える
1

また、コードの反対を行うこともできます。たとえば、入力が 0 以上で 10 より小さいかどうかを確認します。

そうである場合は 0 から 9 までの数字で、そうでない場合は入力が間違っています。

于 2012-10-17T10:01:14.007 に答える