Hier ist mein Code. Ich erstelle ein Programm, das eine String-Eingabe nimmt und es in ein Double konvertiert. Ich muss jedoch bestätigen, dass die Eingabe ein gültiges Double war. Also, wie würde ich darüber gehen? Zum Beispiel wäre 3.14 gültig, aber Dinge wie 3.1.4, bob123 usw. wären nicht gültig.Wie kann ich überprüfen, ob eine Stringeingabe ein gültiges Double ist?
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;
}
}
Ich habe den Code aktualisiert, um zu zeigen, was passiert, wenn es einen Erfolg/Fehler gibt, wenn Sie das meinen – Avoxy