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

你必须使用函数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 回答