您几乎肯定会发现,随着时间的推移,您会变得更加擅长将代码的不同部分分成它们各自提供的功能。使调试和以后的修改变得相当容易。
正如 Giraffe 船长指出的那样,它还使代码的意图更加清晰——这只会使阅读代码更容易、更快捷。
我没有使用 std::find_not_if,而是选择使用您选择的方法(基于重要的事情是知道如何获得正确答案的假设,而不是简单地提供正确答案- 好吧,那和我不知道find_not_if
' 的存在 :grin :) 你会看到我已经将它放入它自己的函数中,我从 main 调用它。该函数也只执行一项任务——检查字符串的有效性。任何尝试提示用户输入此文本,在出现错误时重新提示,最后对正确的输入采取行动,都是调用代码的唯一责任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;
}