ここに私のコードです。私は文字列入力を受け取り、それをdoubleに変換するプログラムを作成しています。しかし、入力が有効なdoubleであることを検証する必要があります。だから私はこれについてどのように行くだろうか?たとえば、3.14は有効ですが、3.1.4、bob123などは有効ではありません。文字列の入力を有効な倍精度にするにはどうすればよいですか?
namespace validInput
{
bool IsValidDouble(string inputString)
{
int start = 0; // the index we will start looking for digits
bool valid = true; // assume valid for now
int decCount = 0;
// check for an empty string
if (inputString.length() < 1)
{
valid = false; // no need to check anything else
}
// next, check for a leading sign
else if (inputString.at(0) == '-'|| inputString.at(0) == '+')
{
start = 1; // start checking for digits after the sign
// check that there's at least one character after the sign
if (inputString.length() < 2)
{
valid = false; // no need to check anything else
}
}
// *****************************************
// CHECK FOR ONLY ONE DECIMAL IN INPUT
// *****************************************
return valid; // return true if valid, false if not
}
// Taking string, validating, converting to float(decimal)
double TryDoubleInput()
{
double dNumber;
string inputString;
//cin >> inputString; // accept a string input
getline(cin, inputString);
if (!IsValidDouble(inputString))
{
cerr << "Invalid input. Please enter a number: ";
dNumber = TryDoubleInput();
}
else
{
dNumber = atof(inputString.c_str()); // convert to an integer
}
return dNumber;
}
}
成功/エラーがあれば何が起こっているかを示すコードを更新しました – Avoxy