cin.Get



  • Hi zusammen

    ich will in meiner Methode einen Pfad einlesen.
    hier mal ein Ausschnitt aud meinem QT:

    class Datei_erstellen
    {
        char dateiname[30];
        char dateipfad[100];
    
    public:
        void getpfad();
        void getdateiname();
        void erstelledatei();
    };
    
    void Datei_erstellen::getpfad()
    {
        cout << endl << "Bitte geben Sie den Pfad der Datei ein: ";
        cin.get(dateipfad, 99);
        //cin >> dateipfad;
    }
    

    Jedoch rennt er bei getpfad() durch, ohne dass ich was eingeben kann.
    Wenn ich aber cin >> dateipfad, dann klappt es.
    Woran liegt das ? Dass mit cin.get stimmt doch oder?

    thx for help
    cya
    alligator
    Bitte Code-Tags benutzen!

    [ Dieser Beitrag wurde am 21.04.2003 um 17:39 Uhr von HumeSikkins editiert. ]



  • cin.get sollte funktionieren. zeig mal etwas mehr code.
    deine char arrays haben eine fixe größe, auch wenn der pfad nur 8 zeichen lang ist, werden 100byte dafür belegt.
    deshalb nimmt man hier üblicherweise std::string:

    #include <string>
    #include <iostream>
    
    class datei_erstellen {
        std::string pfad;
        std::string dateiname;
    public:
        //...
        void get_pfad () {
            std::cout << "\nPfad eingeben: ";
            std::getline (std::cin, pfad);
        }
    };
    //wenn du jetzt einen const char * brauchst, rufst du einfach std::string's funktion
    //c_str() auf.
    //du solltest mal nach der std::string klasse googeln. die ist echt praktisch
    

    vielleicht hilft es, wenn du vor get schreibst:

    cin.clear(); //fehlerstatus löschen
    cin.ignore (cin.rdbuf()->in_avail()); //buffer leeren
    


  • Hi hier erstmal mein QT:

    #include <iostream.h> //für cin,cout
    #include <conio.h>
    #include <stdio.h> //für FILE
    #include <string.h> // wird für strcpy/strncpy/strcat benötigt
    
    class Datei_erstellen
    {
        char dateiname[30];
        char dateipfad[100];
    
    public:
        void getpfad();
        void getdateiname();
        void erstelledatei();
    };
    
    void Datei_erstellen::getpfad()
    {
        cout << endl << "Bitte geben Sie den Pfad der Datei ein: ";
        cin.get(dateipfad, 99);
        //cin >> dateipfad;
    }
    
    void Datei_erstellen::getdateiname()
    {
        cout << endl << "Bitte geben Sie den Dateinamen ein: ";
        cin.get(dateiname, 29);
    }
    
    void Datei_erstellen::erstelledatei()
    {
        cout << endl << "strcat: " <<(strcat(dateipfad,dateiname);
    }
    
    int main ()
    {
    
        char abfrage;
    
        cout << " Willkommen im ME-Dateiprogramm " << endl;
        cout << "a - Datei erstellen"<<endl;
        cout << "b - Datei kopieren"<<endl;
        cout << "0 - Programm Ende"<<endl;
        cin >> abfrage;
    
        if (abfrage=='a')
        {
            Datei_erstellen file;
            file.getpfad();
            file.getdateiname();
            file.erstelledatei();
        }
    
        if (abfrage=='b')
        {
            cout << "b";
        }
    
        cout << endl <<"bye bye";
    
        getch();
    }
    

    Ojee ich glaub ich bin so ziemlich in C und nicht in C++.
    Puhh noch ne Menge Arbeit vor mir.

    cya
    alligator
    Bitte Code-Tags benutzen!

    [ Dieser Beitrag wurde am 21.04.2003 um 17:41 Uhr von HumeSikkins editiert. ]


Anmelden zum Antworten