整数値を保持するはずの変数を、char 値が渡されたときと比較するにはどうすればよいでしょうか。たとえば、次のようになります。
int i;
cin >> i;
if(i == integer)
execute a command;
else (if i == char)
do something else here;
x は文字値を保持できないため、誰かが文字値を i に入力しようとすると失敗しますか?
ctype.h関数を使用して、変数の型を確認します。次のようなものを取得する必要があります。
char i;
cin >> i;
if(isdigit(i))
{
// if integer
}
else if(isalpha(i))
{
//if character
}
文字列への入力を取得し、それを整数に変換してみ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();
}