Ich versuche sicherzustellen, dass meine Eingabezeichenfolge richtig formatiert ist (korrektes Format XXX-X-XXX), aber ich möchte nicht char temp [255] und cin verwenden. Getline-Kombination.Korrekte String-Eingabe in C++ sicherstellen
Bisher habe ich neben diesem einen zu "fangen" alle Ausnahmen verwaltet:
Geben Sie amtliches Kennzeichen: shjkf 22h 23jfh3kfh jkfhsdj H2J h2k 123-A-456
Wie angenommen regPlate wird alle Zeichenfolgen von der Eingabe einschließlich der korrekten formatierten am Ende erhalten und es wird die Zeichenfolge gedruckt. Das ist nicht korrekt. Nach dem Lesen der ersten Zeichenfolge sollte es Bad-Eingabe und alles, nachdem es gelöscht werden muss, drucken.
Ich habe versucht zu verwenden cin.clear()
, cin.ignore()
, etc. in meinem wenn Funktion aber ohne Ergebnisse.
void main()
{
std::string regPlate;
do
{
cout << "Enter registration plate: ";
cin >> regPlate;
if (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9)
{
cout << "Bad entry" << endl;
}
} while (regPlate.size() < 9 || regPlate.at(3) != '-' || regPlate.at(5) != '-' || regPlate.size() > 9);
cout << endl << regPlate << endl;
system("pause");
}
Sie verwenden nicht für Größe müssen prüfen, kleiner ist als '9' * und * größer als' 9'. Überprüfen Sie einfach, ob die Größe nicht 9 entspricht. –
Suchen Sie für Ihr Problem vielleicht nach ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline)? –
@Someprogrammerdude "aber ich möchte nicht char temp [255] und cin.getline combination verwenden." –