ifstream x (string y); - warum string_y?



  • n'abend zusammen...
    ich habe mal wieder ein kleines Problem; und zwar diesmal mit ifstream.
    der code erklärt es eigentlich am besten:

    ifstream eins ("test.txt");
    //funktioniert
    
    ------------------
    
    string dateiname;
    dateiname="test.txt";
    ifstream zwei (dateiname);
    //funktioniert nicht.
    
    ------------------
    
    string dateiname;
    dateiname="test.txt";
    ifstream zwei (string dateiname);
    /*funktioniert, aber warum ist es nötig, noch einmal extra "string" vor die 
    Variable zu schreiben? dateiname ist doch vorher 'ausdrücklich' als string
    deklariert?*/
    

    ich würde das gerne wissen, nicht um weniger schreiben zu müssen, sondern weil es mich eben wundert.
    Bis jetzt habe ich dazu keine Erklärung gefunden, bei allen Beispielen ist der dateiname "direkt" angegeben.



  • ifstreams Konstruktor erwartet keinen String, sondern einen C-String (ein Charliteral)
    Und was machst du um std::string in einen const char * zu verwandeln? Du rufst c_str() auf 😉

    string dateiname = "blub.txt";
    ifstream file (dateiname.c_str());
    

    Dein drittes Beispiel ist übrigens die Vorwärtsdeklaration einer Funktion, die einen ifstream zurückgibt und einen string erwartet



  • das klingt eigentlich logisch, danke.
    den letzten satz versteh ich allerdings nicht ganz; und ist 'mein' drittes beispiel jetzt in ordnung oder nicht?



  • ifstream zwei (string dateiname);

    ist die Deklaration einer Funktion zwei mit Rückgabetyp ifstream, die ein Argument von Typ string nimmt.



  • *aha-effekt*
    danke @ davie & Bashar


Anmelden zum Antworten