variablenyp herausfinden
-
Erklär doch einfach mal was du genau machen möchtest, dann kann man dir auch am besten helfen, so kann man nur Raten was du tatsächlich willst.
-
bevor ich gleich alles umschreibe versuch ichs einfach mal auf die beste methode.
du kennst bestimmt den batch befehl choice.
diese option wäre perfekt dafür.ich hab eine liste von ips, zu denen man connecten möchte zb:
1 1.1.1.1
2 2.2.2.2
3 6.2.5.2und dann noch befehle:
r refresh
0 schliesst das programmso sollte das jez im dosfenster aussehen.
und dann muss ich im c++ die eingabe auswertenif(eingabe > 0){
connect(iplist[eingabe])
} else if(eingabe == "r"){
refresh();
...du weist schon
leider kennt anscheinend xpdos kein choice(erst ab dos 6.x)
deswegen könnte es auch sein, dass der user quatsch eingibt (also keine der optionnen)
dass ich mehere male einen int wert überprüfe und einen stringwert(damit meine ich "r") ist ja noch zu machen.
ich würde einfach else für den fall "r" nehmen aber hier gibt ja 2 Mögl. :
1. "r"
2. irgend eiun müll wie: "kvbkiz"deswegen muss ich das auch überprüfen und dann meint er: ISO forbids comparision between integer and string oder sowas.
-
man macht in etwa folgendes:
int wert; cin >> wert; while (cin.fail()) { cout >> "Eingabefehler\n"; cin.seekg(0,ios::end); cin.clear() cin >> wert; }
-
Ich würd nen regulären Ausdruck verwenden, aber das ganze ist ja noch recht einfach zu validieren, da kannst auch einfach so schnell prüfen:
string eingabe; getline( cin, eingabe); if( eingabe == "r" ) { //refresh } for( int i = 0; i < eingabe.size(); ++i ) { if( !isdigit( eingabe[ i ] ) ) //ungültige eingabe, abbrechen } //Hier besteht eingabe nur aus Zahlen stringstream sstr( eingabe ); int zahl; sstr >> zahl; if( zahl == 0 ) //beenden if( zahl < kleinstmöglicheAuswahl || zahl > größtmöglicheAuswahl ) //fehler ungültige Zahl //hier ist in zahl eine gültige auswahlSolltest so nicht 1:1 übernehmen, aber das Prinzip sollte dir so klar werden.
-
ok danke,
aber jetzt kommt :
204 F:\Dev-Cpp\projects\window\master\main.cpp variable `std::stringstream sstr' has initializer but incomplete typeals fehler muss ich voll noch was includen?
-
Hallo
#include <sstream>bis bald
akari
-
jo danke hat geklappt.
aber könnt ihr mir das hier mal bitte erklären? :
for( int i = 0; i < eingabe.size(); ++i ) { if( !isdigit( eingabe[ i ] ) ) //ungültige eingabe, abbrechen }
-
du musst anstatt "//ungültige eingabe, abbrechen" einen befehl ein setzen der bei dir abbricht. Z.B. "return 1;".
mfg.
-
ja aber ich möchte wissen, was dort passiert.
bitte.
-
Hallo
Was gibt es da groß zu erklären? Schleifen, Bedingungen und Operatoren kannst du in einem Grundlagen-Tutorial durchlesen.
Die Funktion isdigit wird zum Beispiel hier erklärt.bis bald
akari
-
füsig schrieb:
jo danke hat geklappt.
aber könnt ihr mir das hier mal bitte erklären? :
for( int i = 0; i < eingabe.size(); ++i ) { if( !isdigit( eingabe[ i ] ) ) //ungültige eingabe, abbrechen }Ungefähr so viel, als das für jede eingegebene Ziffer einer zahl (bei 234 etwa die Ziffern 2,3 und 4) nacheinander durchgearbeitet werden und überprüft wird ob sie "normale" Ziffern sind.