Eingabe auf Fehler prüfen

Hallo liebe C++ Programmierer,

ich bin relativer Neuling auf dem Gebiet… habe aber folgendes Problem:
Und zwar habe ich eine Struktur angelegt, die aus 4 Strukturelementen der Datentypen char string und zweimal double besteht.
Weiter im Programm lese ich Werte (über die Konsole) mit cin ein und Speicher diese in die Struktur.

Jetzt will ich aber mögich einfach die falsche Eingabe vermeiden und das mit Hilfe einer if else anweisung… Sie soll in etwa die Form haben, dass ich schreibe:

if (Werte der Struktur sind vom falschen Datentyp)

cout

Ohne die Bibliothek Boost wäre es auch möglich allerdings etwas komplizierter…

bool isFloat(std::string derString)
{
using boost::lexical_cast;
using boost::bad_lexical_cast;

try
{
boost::lexical_cast(derString);
}
catch (bad_lexical_cast &amp:wink:
{
return false;
}

return true;
}

Meun ebbi007

Das einzige, was Du prüfen willst, sind vermutlich die Double, denn String - wenn Du wirklich String meinst, hat ja nicht so arg doll viele Einschränkungen…

Bei der Verwendung von „cin >> variable;“ sorgt cin bereits dafür, dass Du nur noch passende Eingaben zu Gesicht bekommst. (Und das ohne Hinweis an den User)

Falls Du also etwas freundlicheres liefern möchtest, musst Du jede Eingabe in einen String übernehmen.
Ggf. willst Du dann auch lieber zeilenweise lesen, sonst wechselst Du - wenn ich mich recht entsinne - mit jedem Wort die Variable.

Falls Du also einen String hast und sicherstellen möchtest, dass der sich für einen Double eignet, dann würde ich am ehesten auf das gute alte strtod aus der C stdlib zurückgreifen.
Hast Du einen nicht-leeren Rest, dann stimmt etwas nicht; ansonsten hast Du auch gleich deinen fertigen Wert.

Falls Deine Strings doch bestimmten Formatvorgaben genügen sollen, dann würde ich die Verwendung von reguar expressions nahelegen. (Da gibt es einige C-libs aber z.B. boost hat auch ein nettes C+±Interface)

VlG