Möchte Textdatei mit Variablen Namen erstellen



  • Mhm kann keiner helfen ?
    Das Programm muss Mittwoch abgegeben werden 😞


  • Mod

    F13 schrieb:

    Mhm kann keiner helfen ?

    Es könnten viele und wollen auch sicher viele, aber du machst es uns schwer dir zu helfen. Ich habe zum Beispiel keine Ahnung, was du überhaupt wissen möchtest. Lies bitte mal den ersten und dritten Link in meiner Signatur gründlich durch.



  • Mh ja finde es schwierig das richtig zu formullieren..
    Also dann versuch ichs nochmal anders:
    In dem Forherigen Post seht ihr den Ausschnitt meines Programms den ich bearbeiten möchte.
    Der eigentliche bereich beginnt bei: void kundeneu()
    Dort werden Name, Telefonnummer und Adresse in dem Textdokument Kunden.txt abgespeichert und können in der Funktion : void kunden() wieder ausgegeben werden
    das funktioniert.

    Meine Frage lautet nun :
    Wie bekomme ich es hin, dass die Nächsten Kundendaten in dem Textdokument:
    Kunden1.txt gespeichert wird, der Darauffolgende dann z.B. in Kunden2.txt
    die "1" Soll hierbei Variabel sein.
    ich dann in der Funktion: kunden() die möglichkeite habe eine Eingabe zu Programmieren :
    Geben Sie bitte die Kundennummer ein :
    dort gibt man ein : 2
    Und die Daten für den Kunden2 aus dem textdokument Kunden2.txt werden ausgegeben .

    Ist es so verständlicher ? Tut mir wirklich leid weiß nicht wie ich das sonst erklären kann 😞



  • Sowas in der Art?

    #include <iostream>
    #include <fstream>
    #include <boost/lexical_cast.hpp>
    
    void createNew(std::string arg)
    {
        static int i=0;
        arg+=boost::lexical_cast<std::string>(i).c_str();
        arg+=".txt";
        std::ofstream os(arg.c_str());
    
        ++i;
    }
    
    int main()
    {
        for(int i=0;i<3;++i)
        {
            createNew("datei");
        }
    }
    

    Anstatt boost kannst du auch std::to_String() oder so verwenden, aber ich vergess immer den Namen.
    Das Auslesen kannst du genauso machen, nur dass du halt keine static variable hast, sondern den Wert einliest. Weisst du was das ist?

    Im Moment werden die Dateien, aber nur erzeugt (das auch nicht sehr elegant aber w/e).

    EDIT: Denkfehler beseitigt.



  • Mag sein das deine Antwort stimmt leider steig ich nicht durch 😞 😕
    hatte mir das einfacher vorgestellt wie das man einfach so :

    void kunden()
    {
    string sText;
    char cNummer;
    
    cout<<"\t\t Geben Sie bitte die Kundenummer ein : \n\n";
    cin>>cNummer;
    
    			fstream filestream("c:\\Programme\\WWS\\Datenstamm\\Kundenstamm\\Kunden" << cNummer << ".txt");
    			getline(filestream,sText);			
    			cout << sText << endl;
    
    	system("pause");
    
    }
    

    Die Kundendaten ausgeben kann

    Ich weiß nicht ob es an der komischen lehrweise meines Lehrers liegt oder an meinem Mangendeln wissen über c++ falls es doch ein sehr gehobenes knwo how of c++ benötigt sagt mir lieber das ich es nicht hinbekomme, dann mache ich das Programm einfach ohne festen Speicher halt so das es keine Daten außerhalb des Programms gibt und ich alle Daten bei Programmstart neu eingeben muss mehr haben wir nämlich im Unterricht nicht gelernt ...



  • F13 schrieb:

    ifstream filestream("c:\\Programme\\WWS\\Datenstamm\\Kundenstamm\\Kunden" + cNummer + ".txt");
    

    Versuch mal ungefähr das.
    Im Moment kann aber deine Nummer nicht größer als 10 werden. Ist das gewollt?

    (Ich hätte boost weglassen sollen).



  • F13 schrieb:

    Wie bekomme ich es hin, dass die Nächsten Kundendaten in dem Textdokument:
    Kunden1.txt gespeichert wird, der Darauffolgende dann z.B. in Kunden2.txt
    die "1" Soll hierbei Variabel sein.
    ich dann in der Funktion: kunden() die möglichkeite habe eine Eingabe zu Programmieren :
    Geben Sie bitte die Kundennummer ein :
    dort gibt man ein : 2
    Und die Daten für den Kunden2 aus dem textdokument Kunden2.txt werden ausgegeben .

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    struct kunde
    {
    	string kdnr;
    	string name;
    	string tel;
    	string adresse;
    };
    
    void kunde_neu()
    {
    	kunde k;
    
    	cout << "\t\t Geben Sie bitte die Kundennummer ein : ";
    	cin >> k.kdnr;
    
    	cout << "\t\t Geben Sie bitte den Kundennamen ein : ";
    	cin >> k.name;
    
    	cout << "\t\t Geben Sie bitte die Telefonnummer ein : ";
    	cin >> k.tel;
    
    	cout << "\t\t Geben Sie bitte die Adresse ein : ";
    	cin >> k.adresse;
    
    	ofstream out(k.kdnr+".txt");
    	out << k.name << "  " << k.tel << "   " << k.adresse;
    }
    
    void kunden()
    {
    	cout << "\t\t Geben Sie bitte die Kundennummer ein : ";
    	string kdnr;
    	cin >> kdnr;
    
    	ifstream in(kdnr+".txt");
    
    	kunde k;
    	in >> k.name;
    	in >> k.tel;
    	in >> k.adresse;
    
    	cout << "\t\t Hallo " << k.name << ", ihre Telefonnummer lautet " << k.tel << " und ihre Adresse ist " << k.adresse << ".";
    } 
    
    int main()
    {
    	kunde_neu();
    	kunden();
    }
    


  • Nun bekomme ich die Fehlermeldung :
    Fehler 1 error C2110: '+': Zwei Zeiger können nicht addiert werden



  • F13 schrieb:

    Nun bekomme ich die Fehlermeldung :
    Fehler 1 error C2110: '+': Zwei Zeiger können nicht addiert werden

    const string path = k.kdnr+".txt";
    ofstream out(path.c_str());
    

  • Mod

    F13 schrieb:

    Nun bekomme ich die Fehlermeldung :
    Fehler 1 error C2110: '+': Zwei Zeiger können nicht addiert werden

    Hast du irgendwo etwas wie "abc" + "def" geschrieben? Bitte bei Fehlern auch Code zeigen! Siehe (nochmal 🙄 ) den dritten Link in meiner Signatur. Falls du Gugelmosers Code meinen solltest (der würde aber andere Fehler liefern): Der braucht C++11. Ohne musst du den fstream mit einem C-String füttern (über die std::string Memberfunktion c_str).



  • Hmm.. ich hätte testen sollen.. Sorry, ich hatte nicht nachgedacht.

    string s="c:\\Programme\\WWS\\Datenstamm\\Kundenstamm\\Kunden";
    s+=cNummer;
    s+=".txt";
    ifstream ifilestream(s.c_str());
    


  • Gehirngulasch 😃

    Ich hatte damit den Post von Nymer gemeint

    F13 schrieb:

    Nun bekomme ich die Fehlermeldung :
    Fehler 1 error C2110: '+': Zwei Zeiger können nicht addiert werden



  • Jaaaa 🙂 es funktioniert 🙂
    Danke an alle die mir bis jetzt geholfen haben 👍 🙂
    Ihr seid hammer 🙂


Anmelden zum Antworten