Speichern/Auslesen Textdateien



  • Ich wollte mal ein Programm machen das für mich sachen speichert und ich die dann einfach bei dem text dokument abrufen kann.

    Es hat alles funktioniert wenn ich feste eingaben im Programm mache.
    Wenn ich dann aber versuche mit cin.getline meine eigenen eingaben zu machen funktioniert das nicht mehr.

    Ich freue mich wie immer auf Verbesserungsvorschläge.

    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main() {
    	system("Color A");
    
    	const string s_name;
    	const string s_alter;
    	const string s_geschlecht;
    
    	const string s_dataName = "mensch.txt";
    
    	// Eigenschaften
    	cout << "Name: ";
    	cin.getline >> s_name;
    
    	cout << "\nAlter: ";
    	cin.getline >> s_alter;
    
    	cout << "\nGeschlecht:: ";
    	cin.getline >> s_geschlecht;
    
    	ofstream of_schreiben;
    	ifstream if_lesen;
    
    	// Schreiben/Einspeichern----------------------------------------------------	
    
    	of_schreiben.open(s_dataName.c_str(), ios::out);				
    
    	of_schreiben << s_name << "," << s_alter << "," << s_geschlecht;	
    
    	of_schreiben.close();												
    
    	// ---------------------------------------------------------------------------
    
    	// Auslesen-------------------------------------------------------------------
    
    	// Eigentschaften
    
    	char c_name[256];	
    	char c_alter[256];	
    	char c_geschlecht[256];	
    
    	if_lesen.open(s_dataName.c_str(), ios::in);	
    
    	if_lesen.getline(c_name, 256, ',');			
    	if_lesen.getline(c_alter, 256, ',');			
    	if_lesen.getline(c_geschlecht, 256, '\n');			
    
    	if_lesen.close();									
    
    	// ---------------------------------------------------------------------------
    
    	// Ausgabe--------------------------------------------------------------------
    
    	cout << "Name: " << c_name << endl;
    	cout << "Alter: " << c_alter << endl;
    	cout << "Geschlecht: " << c_geschlecht << endl;
    
    	system("PAUSE");
    
    	return 0;
    }
    
    
    


  • "funktioniert nicht" ist keine Fehlerbeschreibung.



  • Die Zeile

    cin.getline >> s_name;
    

    (und folgende) ist ja auch falsch.
    Entweder den Stream-Operator >> oder getline (aber nicht beides).
    Und wenn du den Fehler behoben hast, dann erhältst du noch einen weiteren, weil du die Strings als const definiert hast (und somit keine Änderung zur Laufzeit möglich ist).



  • @unkn0wn sagte in Speichern/Auslesen Textdateien:

    cin.getline >> s_name

    Zeit C++ zu lernen. Du kannst in C++ nicht einfach ein paar Bezeichner mit ein paar Trennzeichen dazwischen hinschreiben die irgendwie mit dem zu tun haben was du erreichen willst, und dann hoffen dass es funktioniert. Also tun kannst du das natürlich schon, aber die Hoffnung wird meistens nicht erfüllt werden.

    Wenn du Zeilen aus einem Stream lesen willst, dann nimm std::getline: http://www.cplusplus.com/reference/string/string/getline/
    Und wenn du Variablen modifizieren möchtest, dann mach' sie nicht const.


Log in to reply