現在、コード内に整数の検証ループを作成する際に問題が発生しています。C++整数の検証
文字列 '22a'を入力すると、このコードは正常に動作しませんが、たとえば '22a'という文字列を入力すると、trial_noは22となります。すべての文字入力が実際には文字列であることを確認する方法はありますか'22a'または '2a2'は誤っているとみなされ、ループは有効な整数が入力されるまで続きますか?
int trial_no;
bool valid = false;
while(!valid)
{
valid = true; //assume trial_no will be an integer
cout << "Enter the number of die throws to simulate" << endl;
cin >> trial_no;
if(cin.fail()) // exit loop condition is dependent on trail_no being a valid integer
{
cin.clear(); //corrects stream
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //skips left over stream data (numeric_limit
// is in case user enters more than one letter))
cout << "Please enter an integer value" << endl;
valid = false; //cin not an integer so loop goes round to try again
}
}
がのstd ::文字列としてそれを読んで、その後、整数に変換します。変換に失敗した場合は、整数ではありません。 –
[C++文字列がintかどうかを確認するにはどうすればよいですか?](https://stackoverflow.com/questions/2844817/how-do-i-check-if-ac-string-is-an-int ) – user2891462