Dateizugriff - int zu string (bzw. char)



  • Hallo an alle die dies lesen!

    Ich bin noch recht neu was Porgrammieren angeht, darum bin ich auch ein kleines Problem gestoßen, für das ich keine richtige lösung finde.
    Es geht darum das ich in eine .txt-Datei etwas reingeschrieben wird, mittels Konsolenanwendung. Dabei handelt es sich aber nicht um einen einfachen string, sondern auch um ein Integer-Variablen. Nun hab ich das Problen, das das ganze auch wieder ausgelesen werden soll (in der Anwenung). Ich poste nochmal zum besseren Verstädnis die Stelle im Quellcode:

    fstream f;
    f.open("addition.txt", ios::out|ios::app);
    f<<op1<<" + "<<op2<<" = "<<userResult<<" TRUE"<<endl;
    f.close();
    

    Und beim Auslesen, würde ich das mit einem Array für jede Zeile die dann in der .txt steht machen. Aber das Problem ist wie schon gesagt: Wie krieg ich
    op1<<" + "<<op2<<" = "<<userResult<<" TRUE" als einen einzigen String in das Array rein?

    Ich hoffe es war einigermaßen verständlich! 😕
    MFG Snowfey



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ein paar Tips:

    Zum schreiben einer Datei nutzt man eher
    std::ofstream
    zum lesen einer Datei nutzt man eher
    std::ifstream

    Und um das zu bewerkstelligen was du vorhast, nutzt man
    std::stringstream



  • Ah, sorry das ich es bei Visual reingepackt habe. Ich schreibe es nur mit Visual, darum hab' ich es darein getan.

    Und, danke @ Firefighter!
    Ich schau's mir mal in ruhe an. Ich gebe dann nochmal Feedback wenn es geklappt hat!

    MFG Snowfey



  • Ehrlich gesagt hab ich keinen blassen Schimmer was du machen willst.
    Hier ein Beispiel um Integer in Strings zu packen:

    #include <iostream>
    #include <string>
    #include <sstream>
    
    using namespace std;
    
    int main()
    {
    	string Rechnung; ostringstream strm;
    	int zahl1 = 1, zahl2 = 1, ergebnis;
    	ergebnis = zahl1 + zahl2;
    
    	strm << zahl1 << " + " << zahl2 << " = " << ergebnis;
    	Rechnung = strm.str();
    	cout << Rechnung;
    	cin.get();
    	return 0;
    }
    


  • Grob gesagt geht's darum das ich etwas in eine .txt-Datei schreibe und er es mit der selben Konsolenanwenung wieder auslesen soll.
    Wie schon oben angesprochen, ich bin noch recht neu in sachen Dateizugriff und Fileop.
    Das reinschreiben in die Datei klappt ja. Steht auch drinne, aber ich möchte es Zeilenweise wieder auslesen.
    Nur so richitg will es nicht klappen.



  • Zeilenweises auslesen einer Datei + ausgeben:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    int main()
    {
    	ifstream inp;
    	vector<string> inhalt;
    	string temp, filename;
    
    	cout << "Dateiname? ";
    	cin >> filename;
    
    	inp.open(filename.c_str(), ios::binary | ios::in);
    	if (!inp)
    	{
    		cerr << "fehler beim lesen der datei!";
    		return -1;
    	}
    
    	while (!inp.eof())
    	{
    		getline(inp, temp);
    		inhalt.push_back(temp);
    	}
    
    	for (unsigned int i=0; i<inhalt.size(); i++)
    		cout << inhalt[i] << endl;
    
    	inp.close();
    
    	return 0;
    }
    


  • Snowfey schrieb:

    Grob gesagt geht's darum das ich etwas in eine .txt-Datei schreibe und er es mit der selben Konsolenanwenung wieder auslesen soll.
    Wie schon oben angesprochen, ich bin noch recht neu in sachen Dateizugriff und Fileop.
    Das reinschreiben in die Datei klappt ja. Steht auch drinne, aber ich möchte es Zeilenweise wieder auslesen.
    Nur so richitg will es nicht klappen.

    Möchtest Du die Zeilen auslesen oder z.B. auch die Integer-Variablen, die Du in die Datei geschrieben hast?



  • Mh, das könnte gehen Eric Cartman.

    @ Werner Salomon:
    Naja, er soll einfahc nur einen string auslesen. Also die Variablen sollen nciht wieder erkannt werden oder rausgefiltert werden. Es soll quasi nur dastehen:
    z.B. 56 * 34 = 1904

    Und das mit allen Zeien die in das Programm geschrieben worde. Bzw. mit allen Aufgaben.

    MfG Snowfey



  • Jo, danke an Euch!

    Ich hab's ähnlich gemacht wie du (Eric) , nur halt das mit dem Dateinamen eingeben hab ich weggelassen, da die ja standardmäßig feststehen sollen.
    Ich verstehe nur nich ganz was das "vector<string>" bewirken soll.

    Funktioniert jetzt soweit wie ich haben wollte. 🙂

    MfG Snowfey



  • Snowfey schrieb:

    Jo, danke an Euch!

    Ich hab's ähnlich gemacht wie du (Eric) , nur halt das mit dem Dateinamen eingeben hab ich weggelassen, da die ja standardmäßig feststehen sollen.
    Ich verstehe nur nich ganz was das "vector<string>" bewirken soll.

    Funktioniert jetzt soweit wie ich haben wollte. 🙂

    MfG Snowfey

    In vector<string> speicherst du die Datei zeilenweise ein. Also theoretisch koenntest du auch einzelne Zeilen direkt ansprechen, z.B. so: inhalt[zeilennummer] <--- gibt den Inhalt der Zeile zeilennummer zurueck (als string), wobei ab 0 gezaehlt wird.

    Mit inhalt.push_back fuege ich eine neue Zeile am Ende des Arrays ein.

    inhalt.size() gibt die genaue Anzahl der Zeilen als size_t wieder.

    http://www.cplusplus.com/reference/stl/vector/

    Freut mich, dass ich helfen konnte 🙂

    Gruss
    Cartman


Anmelden zum Antworten