4

最初に私のコードを見てください:

#‎include‬ <iostream>
#include <ctype.h>
using namespace std;
int main()
{
    int a,b;
    cout << "Enter two digits" << endl;
    cin >> a >> b;
    if (isdigit(a))
        if (isdigit(b))
            cout << a+b << endl;
        else
            cout << "Invalid Digit";
    return 0;
}

したがって、何かを入力すると、空白のみが出力されます。私がしたいのは、ユーザーが数字以外をヒットした場合、またはアルファプログラムが無効な文字列を表示する必要がある場合、またはユーザーが数字をヒットした場合は、2桁の合計を表示する必要がある場合に出力することです

4

2 に答える 2

3

変数を読み込んでいるのでint、入力するものはすべて整数でなければならず、そうでないと入力演算子は失敗します。文字を読み取って数字かどうかを確認する場合は、char変数に読み取ってから、操作する前に適切な整数値に変換する必要があります。

次のようなものを試してください:

inline int to_int(const char ch)
{
    return ch - '0';
}

// ...

char a, b;
if (std::cin >> a >> b)
{
    if (std::isdigit(a) && std::isdigit(b))
        std::cout << to_int(a) + to_int(b) << '\n';
    else
        std::cout << "One is not a digit\n";
}
else
    std::cout << "Error in input\n";

2 つの一般的な整数値を入力するだけの場合は、既に正しい軌道に乗っています。入力に問題がないことを確認する必要があります。

int a, b;
if (std::cin >> a >> b)
    std::cout << a + b << '\n';
else
    std::cout << "Error in input (most likely not integers in input)\n";
于 2013-08-08T09:11:34.030 に答える
1

あなたがしていることは、あなたがやりたいことではありません。

isdigit渡された値が数字の場合、true を返します。これは、文字として解釈される入力が数字である場合に当てはまります。伝統的なヨーロッパ言語と ASCII 文字エンコーディングを仮定すると、またはの値が48..57 の範囲にisdigitある場合に true になるため、これはあなたが望むものとは思えません。ab

あなたがやりたいことは、abが有効な整数値であるかどうかを確認することだと思います。その場合:

 if (cin >> a >> b)
 {
    cout << a + b << endl;
 }
 else
 {
    cout << "Invalid digit" << endl; 
 }

するのが正しいでしょう。

于 2013-08-08T09:15:04.060 に答える