wie kann man einen Vektor oder eine Matrix in einem txt-File abspeichern oder die aus dem .txt-File wieder laden???



  • Und um es gleich zu sagen: Niemand macht hier deine Hausaufgaben.



  • The-Kenny schrieb:

    Und um es gleich zu sagen: Niemand macht hier deine Hausaufgaben.

    Hat er auch nicht erwartet. Hätte er sonst Folgendes geschrieben?

    ent.yangyang schrieb:

    Kann jemand mir paar Hinweise geben,womit ich anfangen soll?Vielen Dank:D 🙂



  • haha,danke für die Aufklärung und die Tipps.
    ich lerne gerade drüber noch 🙂 werde diese Probleme selber lösen.
    Falls es mir nachher noch irgendwas unklar wäre,würde euch vielleicht noch um die Hilfe bitten :p



  • Also generell kannst du auch einfach zeilenweise einlesen und dann mit Hilfe von Trennzeichen die einzelnen Werte herausparsen.

    Beispieldatei:

    0;1;2;3
    4;5;6;7
    8;9;10;11
    

    Hat den Vorteil, dass du die Datei auch einfach mit Excel / OpenOffice anschauen kannst.



  • Jetzt kommt die Frage 😕

    Ich hab versucht,mit der Funktion saveModel(string path) anzufangen.
    kompillieren tut es gut.aber ich kann diese .txt Datei in D:\ nicht finden.Ich kann deswegen nicht weiter machen,weiß nicht wie den Inhalt der .txt Datei aussieht....

    kann jemand mir mal helfen?vielen Dank! 😋

    #include "stdafx.h"
    #include <CleverRobot.h>
    #include "Util.h"
    #include <vector>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    //Testen saveModel
    
    	CleverRobot robot=CleverRobot();
    
    	string path="D:\TEXT.txt";
    
    	robot.saveModel(path);
    
    	return 0;
    }
    
    void CleverRobot::saveModel(string path)
    {
    	vector<float> tmp(3);
    	tmp.at(0)=1;
    	tmp.at(1)=2;
    	tmp.at(2)=3;
    // save data to path
    	ofstream fout("path",ios::out|ios::binary);
    	if(!fout)
    	{
    		cerr<<"can't open the file"<<endl;
    		exit(1);
    	}
    
    	int a=(int)tmp.size();
    
    	for(int i=0;i<a;i++)
    		fout.write((char*)&a,sizeof(a));
    	fout.close();
    
    }
    


  • int main()
    {
    
    //Testen saveModel
    
        CleverRobot robot=CleverRobot();
    
        string path="D:\\TEXT.txt";//hier müssen zwei "\" hin
    
        robot.saveModel(path);
    
        return 0;
    }
    

    Weiterhin musst du es so machen.

    ofstream fout(path.c_str(),ios::out|ios::binary);
    


  • Firefighter schrieb:

    int main()
    {
    
    //Testen saveModel
    
       
        CleverRobot robot=CleverRobot();
    
        string path="D:\\TEXT.txt";//hier müssen zwei "\" hin
    
        robot.saveModel(path);
    
        return 0;
    }
    

    Weiterhin musst du es so machen.

    ofstream fout(path.c_str(),ios::out|ios::binary);
    

    Firefighter schrieb:

    int main()
    {
    
    //Testen saveModel
    
       
        CleverRobot robot=CleverRobot();
    
        string path="D:\\TEXT.txt";//hier müssen zwei "\" hin
    
        robot.saveModel(path);
    
        return 0;
    }
    

    Weiterhin musst du es so machen.

    ofstream fout(path.c_str(),ios::out|ios::binary);
    

    vielen Dank!! 🙂
    hab's erzeugt.aber mein Vektor in .txt Datei sieht irgendwie so aus:

        

    😕



  • warum nimmst du zum schreiben ios::binary ich dachte die datei soll auch für menche lesbar sein? Bin binary klappt das aber nur für die maschine ^^



  • blups0r schrieb:

    warum nimmst du zum schreiben ios::binary ich dachte die datei soll auch für menche lesbar sein? Bin binary klappt das aber nur für die maschine ^^

    ja,daran hab ich auch mal gedacht.hab mein Prototyp verändert wie folgendes:

    ofstream fout(path.c_str(),ios::out|ios::dec)
    

    dann wird das Programm abgebrochen bei:

    if(!fout)
    	{
    		cerr<<"can't open the file"<<endl;
    		exit(1);
    	}
    

    😞



  • ich hab jetzt einfach den Operator

    <<
    

    verwendet,und es hat dann geklapt :

    int main()
    {
    	CleverRobot robot=CleverRobot();
    
    	string path="D:\\TEXT.txt";
    
    	//robot.loadModel(path);
    	robot.saveModel(path);
    
    	//robot.loadModel(path);
    
    	return 0;
    }
    
    void CleverRobot::saveModel(string path)
    {
    	//TESTEN
    	vector<float> tmp(5);
    	tmp.at(0)=1;
    	tmp.at(1)=2;
    	tmp.at(2)=3;
    	tmp.at(3)=4;
    	tmp.at(4)=5;
    
    	// save data to path
    	ofstream fout(path.c_str());//Prototyp
    
    	//Fehlerhandlung
    	if(!fout)
    	{
    		cerr<<"can't open the file"<<endl;
    		exit(1);
    	}
    
    	fout<<"prior"<<endl;
    	for(int i=0;i<(int)tmp.size();i++)
    	fout<<tmp.at(i)<<"  ";
    
    	fout.close();
    
    }
    

    in der .txt Datei wird folgendes gezeigt:

    prior
    1 2 3 4 5



  • jetzt ist es die Frage:wie kann man diese Char im Vektor "prior" ("1" "2" "3" "4" "5")

    wieder aus der .txt Datei reinladen,und ins neue Model wie z.B. einen Vektor umwandeln? 😕 :xmas2:



  • ifstream::operator >> ist da dein Freund. 😉

    float temp = 0.0f;
    std::vector<float> cont;
    std::ifstream in("in.txt");
    
    while ( in >> temp )
       cont.push_back ( temp );
    

Anmelden zum Antworten