getline() liest nur erste Zeile



  • Ich habe vor kurzem angefangen mir C++ anzugucken. Ich habe eine Datei test.txt, wo alle Namen untereinander angegeben sind. Dann möchte ich mit meinem Programm jeweils eine Zeile auslesen und in einer Variable speichern. Die ich dann in einen anderen Text an mehreren Stellen einsetze. Der Text wird dann in einer Datei text.txt gespeichert und die nächste Zeile/Name wird in die Variable gespeichert und in den gleichen Text eingefügt der dann unter den vorherigen Text in der Datei Text.txt gespeichert wird. Hoffe das war verständlich 😃 Hier zu habe ich folgendes Programm geschrieben:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream>
    using namespace std;
    
    int main(int argc, char** argv) {
    	ifstream datei("E:\\Documents\\C++\\test.txt");
    	string zeile;
    	std::ofstream schreiben;
    	while(getline(datei, zeile)) 
    	{
    	string a;
    	stringstream frage(zeile);
    	frage >> a;
    	schreiben.open("text.txt",ios::in);
    	schreiben << "var " << a << " = document.forms['fragebogen']['" << a << "'].value;\n";
    	schreiben << "if (" << a << " == null || " << a << " == '') {\n";
    	schreiben << "document.getElementsByName('" << a << "').style.backgroundColor = 'dfac20';\n";
    	schreiben << "return false;";
    	}
    }
    

    Bei mir wird immer nur die erste Zeile von test.txt eingelesen, eingesetzt und in text.txt gespeichert.


  • Mod

    Ungetestet: Entferne Zeile 16, ersetze Zeile 10 durch

    std::ofstream schreiben("text.txt");
    


  • Wow danke funktioniert und danke für die schnelle Antwort 😃



  • Hoffentlich weißt Du auch, warum es nun funktioniert, bzw. wo GENAU jetzt der Unterschied ist ...



  • Jetzt ist er bestimmt schon davon.

    Mensch SeppJ! 🙄 😃


Log in to reply