Diverse Verständnisrobleme / Tips
-
Hallo,
Seit 2 Tagen beschäftige ich mich mit C++ und bin derweil auf einige probelmatische Fälle gestoßen über die ich mir hier Aufklärung erhoffe.
Es soll von folgendem Beispiel ausgegangen werden:
Ein Programm kennt verscheidiene Nutzer und speichert deren Daten (PW, Name, etc.) in einer Datei ab. Je nach Bedarf werden diese Daten ausgelesen und via getline(datei, variable) in eine Variable gelesen.
1:
So weit so gut. Wenn cih jedoch in einem Programm sowohl cin als auch getline() verwenden möchte, funktioniert getline() nichtmehr. Mir wurde das damit erklärt dass cin eine Leerstelle anfügt, die von getline() als Ende interprtiert wird. Wie kann ich das verhindern?2:
Da das Programm ab einem gewissen Punkt (nach Abfragen der verscheidnenen Möglichen User, passwörter etc) recht unübersichtlich verschachtelt wird, habe ich mir als Lösung überlegt eine "weiter" Variable zusetzen, nach der dann weiter vorgegangen wird:if(a=1) weiter == 2 *ENDE BLOCK* if (weiter == 2) *Anweisungen*Das erscheint mir aber sehr unsauber. Weie ließe es sich besser lösen?
3:
ich möchte mit system("xdg-open%s",&var) Eine vom User eingegebene URL öfnen lassen. Leider wird diese Schreibweise aber nicht unterstützt. Wie kann ich das umgehen?Hetzlichen Dank für alle Lösungsvorschlöge

-
wabbul schrieb:
Hallo,
Seit 2 Tagen beschäftige ich mich mit C++ und bin derweil auf einige probelmatische Fälle gestoßen über die ich mir hier Aufklärung erhoffe.
Es soll von folgendem Beispiel ausgegangen werden:
Ein Programm kennt verscheidiene Nutzer und speichert deren Daten (PW, Name, etc.) in einer Datei ab. Je nach Bedarf werden diese Daten ausgelesen und via getline(datei, variable) in eine Variable gelesen.
1:
So weit so gut. Wenn cih jedoch in einem Programm sowohl cin als auch getline() verwenden möchte, funktioniert getline() nichtmehr. Mir wurde das damit erklärt dass cin eine Leerstelle anfügt, die von getline() als Ende interprtiert wird. Wie kann ich das verhindern?zeig mal den code
-
-
if (name == "Tom Muster" || "tom muster") heißt: if(name == "Tom Muster" || "tom muster" != 0)Das ist wahrscheinlich nicht, was du meintest.
if (weiter =='0') ist das gleiche wie if(weiter == 48)Durch die Anführungszeichen wird die 0 als Buchstabe interpretiert und der ascii-Code von 0 ist 48.
string name, anrede, pw, nr, betrag, eingabe ; int weiter ;In C++ musst du nicht alle Variablen direkt am Anfang deklarieren.
cout << "Willkommen Herr %s", &name ;cout != printf
In C++ geht das so:cout << "Willkommen Herr " << name;und statt \n nimmt man auch std::endl:
cout << "Falsches Passwort" << endl;
-
Danke schon einmal hierfür.
Das deklarieren der Variablen gleich am Anfang halte ich für "schöner".
cout != printf
In C++ geht das so:Könnte dies auch der Fehler bei Problem Nr.3:
ich möchte mit system("xdg-open%s",&var) Eine vom User eingegebene URL öfnen lassen. Leider wird diese Schreibweise aber nicht unterstützt. Wie kann ich das umgehen?
sein?
-
Könnte dies auch der Fehler bei Problem Nr.3: sein?
Ja.
Die Ausgabe über Spezialsequenzen (%s, %i ...) und zusätzliche Parameter sind eine eigenständige Funktion der printf-Funktionen. Normale Funktionen unterstützen das nicht.string url("xdg-open "); string input; cin >> input; url += input; system(url.c_str());Übrigens wird dir wahrscheinlich gleich jemand erklären, dass (und warum) system() böse ist.
-
wabbul schrieb:
Das deklarieren der Variablen gleich am Anfang halte ich für "schöner".
Tipp: Gewöhn dir das lieber ab. Später nervt das eher.