0

整数値を保持するはずの変数を、char 値が渡されたときと比較するにはどうすればよいでしょうか。たとえば、次のようになります。

int i;
cin >> i;
if(i == integer)
          execute a command;
else (if i == char)
          do something else here;

x は文字値を保持できないため、誰かが文字値を i に入力しようとすると失敗しますか?

4

2 に答える 2

2

ctype.h関数を使用して、変数の型を確認します。次のようなものを取得する必要があります。

char i;
cin >> i;

if(isdigit(i))
{
 // if integer
}
else if(isalpha(i))
{
 //if character
}
于 2012-09-26T17:07:29.903 に答える
1

文字列への入力を取得し、それを整数に変換してboost::lexical_castてください(ここには無数のオプションがありますstd::istringstream、、、、std::stoiなど...)。変換が成功した場合は整数があり、失敗した場合はそうではありません。以下を使用した例を次に示しistringstreamます。

std::string input;
std::cin >> input;
std::istringstream iss(input);
int x;
if (iss >> x)
{
    // success
}
else
{
    // failure
}

整数でない場合に入力が何であるかを気にしない場合は、int:への入力時に直接失敗をチェックできます。

int x;
if (cin >> x)
{
    // success
}
else
{
    // get cin out of the error state
    cin.clear();
}
于 2012-09-26T16:49:39.293 に答える