Hilfe bei Bankautomaten Projekt
-
wabbul schrieb:
if (Kntnr == '0000') { file.open(0000.txt) }Anführungszeichen könnten ihren Beitrag zur erfolgreichen Übersetzung leisten. Muss aber nicht, wenn du nicht willst...

Die einfach Anführungszeichen oben sind auch falsch. Ein Zeichenliteral ist nur ein Zeichen breit, alles darüber hinaus ist ein String und bedarf der doppelten Anführungszeichen...
-
Florian G., überleg dir nochmal, was eine while-Schleife macht (eine if-Anweisung wäre in deinem Fall wohl sinnvoller).
-
_matze schrieb:
Anführungszeichen könnten ihren Beitrag zur erfolgreichen Übersetzung leisten. Muss aber nicht, wenn du nicht willst...
[...]Asche auf mein Haupt. Danke für die Berichtigung.
Übrigens, um mal eine eigene Frage einzubringen wenn es erlaubt ist:
// Lese nun aus der Datei. Es wird getline verwendet um komfortabel eine ganze Zeile zu lesen. Zuerst muss aber der Dateipointer wieder auf den Anfang gesetzt werden: file.seekg(0);Was genau tut bitte die Funktion seekg(0)?
Ist diese dafür zuständig dass immer nur eine Zeile gelesen wird und nicht der gesamte Inhalt?
-
Man entschuldige den doppel-Beitrag, ich werde mich gleich registrieren.
Gearde ahbe ich die Funktion seekg() getestet, die allem Anschein den Cursor auf die Stelle im Paramter verschiebt.
Welche Funktion ist also für einen Zeilensprung geeignet?
-
Hallo, ich habe jezz mal deine Lösung probiert, und mit einem einfachen
cout<<buffer;versehen, jedoch kommen 6 Fehlermeldungen, ich glaube das mir includes fehlen oder sonstiges, kann mal jmd bitte drübersehen, hier ein screenshot.
-
Es sollte noch folgendes eingebunden werden:
#include <fstream> // für std::ifstream #include <string> // für std::string und std::getlineUnd noch eine kleine Anmerkung: Entweder verwendest du
using namespace std;und entfernst dann die ganzen
std::oder aber (was ich persönlich besser finde) du schmeißt dasusing namespace std;weg und verwendest dann konsequent
std::. Also, zum Beispiel auch hier:cout<<buffer; // <-- vor cout dann das std:: schreibenEs liegt ganz an dir

-
So Danke,
Ich habe deine Erklärungen befolgt.
Jedoch scheint es nicht ganz zu funktionieren, dort wo die .exe gespeichert wird habe ich eine 0000.txt erstellt.
Dort steht in der ersten Zeile TEST.
Jedoch wird dies nicht ausgegeben es erscheint nur ein leeres Dos Fenster.
Was mache ich den Falsch?
Danke für die schnellen Hilfen bis jetzt haben wir sehr geholfen!
#include <iostream> #include <iomanip> #include <fstream> // für std::ifstream #include <string> // für std::string und std::getline using namespace std; int main() { string buffer; ifstream myFile; myFile.open("00000.txt");//, std::ios::in); // Textdatei öffnen while (getline(myFile, buffer)) { // die aktuelle Zeile in den String "buffer" einlesen und den Zeiger auf die nächste Zeile setzen cout<<buffer; // hier kannst du deine Operationen mit der aktuellen Zeile (in "buffer") durchführen, z.B. einen Wert auslesen (mit Stringoperationen) und in einer Variable speichern } myFile.close(); // und danach Datei schließen fflush(stdin); getchar(); return 0; }
-
Florian G. schrieb:
dort wo die .exe gespeichert wird habe ich eine 0000.txt erstellt.
Florian G. schrieb:
myFile.open("00000.txt");Fällt dir was auf?

Wenn du nicht weißt, was bei einem Programm schief läuft, dann nutze den Debugger! Setze dir Breakpoints, gehe schrittweise durch das Programm, überprüfe Variableninhalte. Außerdem solltest du bei vielen Funktionen immer die Rückgabe checken. Du weißt z.B. gar nicht, ob die Datei wirklich geöffnet werden konnte.
-
JA mir fällt auf das ich ein kleines Dumemrchen bin =)))
Vielen dank für die Hilfe den Rest werde ich hinbekommen.TY

-
Zur Sicherheit nochmal eine kurze Anmerkung (falls nicht sowieso schon klar): bei ifstream::open immer checken, ob die Datei wirklich geöffnet werden konnte (ansonsten halt ne Fehlermeldung oder so).