ユーザーが C++ プログラムでのみ実数を入力するように制限するにはどうすればよいですか?
例:
倍数; cin >> 番号;
'12add' 、 'abcd' などの入力は受け付けません。
誰かが私をそれに導くことができますか?ブール値を使用します。ありがとう!
ユーザーが C++ プログラムでのみ実数を入力するように制限するにはどうすればよいですか?
例:
倍数; cin >> 番号;
'12add' 、 'abcd' などの入力は受け付けません。
誰かが私をそれに導くことができますか?ブール値を使用します。ありがとう!
ユーザーに正しい入力を強制することはできません。ただし、前の入力が無効である場合は、別の入力を求めることができます。そのためにはさまざまな手順があります。1つは次のとおりです。
getline
行を読むために使用しますこれは問題なく、非常に一般的です。ただし、動的メモリを使用します。別のオプションは次のとおりです。
cin >> value;
いつものように使うcin.fail()
入力が正しく読み取られたかどうかを確認します (以下も確認してくださいcin.eof()
)失敗した場合、空白になるまですべての入力を無視します。
char c;
while (cin >> c)
if (isspace(c))
break;
これには、次のような誤った入力があるという追加の利点があります。
abc 12.14
行全体を無視するのではなく、abc
.
正規表現を使用して解決できます
double inputNumber()
{
string str;
regex regex_double("-?[0-9]+.?[0-9]+");
do
{
cout << "Input a positive number: ";
cin >> str;
}while(!regex_match(str,regex_double));
return stod(str);
}
ヘッダーに正規表現ライブラリを含めることを忘れないでください。
機能をチェックしてくださいsscanf
。
残念ながら、それを避けることはできません...文字列を入力として受け入れ、文字列を解析して(おそらく正規表現を使用して)正確さを確認できます。
データを として取得しstd::string
、標準の文字列変換関数の 1 つを使用して、コンテンツが期待どおりかどうかを確認できます。