ほとんどの場合、時間の経過とともに、コードのさまざまな部分をそれぞれが提供する機能に分離することに熟達していることに気付くでしょう。デバッグとその後の変更を大幅に容易にします。
また、Captain Giraffe が指摘するように、コードの意図がより明確になり、コードをより簡単かつ迅速に読み取ることができます。
私はstd::find_not_ifを使用していません。代わりに、選択した方法を使用することを選択しました(重要なことは、正しい答えを単に提供するのではなく、正しい答えを得る方法を知っているという仮定に基づいています-まあ、それと私は の存在を知りませんfind_not_if
:grin:) main から呼び出す独自の関数にそれをチャックしたことがわかります。この関数は、文字列の有効性をチェックするという 1 つのタスクのみを実行します。ユーザーにこのテキストを要求し、エラーが発生した場合は再度要求し、最終的に正しい入力に対してアクションを実行しようとする試みは、呼び出しを行うコードの単独の責任です。isValidNumericalString
- main の単一の大きな本体を持つのとは対照的に、これらの関数を独自の関数にスローできない理由はありません。
#include <iostream>
using namespace std;
// returns true if all characters in string are numerical (0-9)
bool isValidNumericalString(string inputString)
{
int i, n = inputString.length();
for (i=0; i<n; i++)
if ( !isdigit(inputString[i]) )
return false;
return true;
}
int main()
{
string In1;
cout << "Enter a very large number (digits 0-9 only. 10e1 is unacceptable): ";
cin >> In1;
while (!isValidNumericalString(In1))
{
cout << "You did not enter a valid input, please try again :p" << endl;
cout << "Enter a very large number (digits 0-9 only. 10e1 is unacceptable): ";
cin >> In1;
}
cout << "Congratulations - '" << In1 << "' is a valid string representation of a number" << endl;
return 0;
}