Warum sollte ich c_str () in Funktionen verwenden [duplizieren]

7

Ich lese das Buch C ++ Primer und bei der Dateieingabe Kapitel verwendet es:

%Vor%

, um eine Datei zu öffnen, deren Name in der Zeichenfolge ifile steht.

Ich habe den Code ausprobiert und er funktioniert auch ohne c_str() perfekt. Also, was ist der Sinn der Verwendung?

Soll ich c_str() verwenden, wenn ich versuche, eine Datei über ein Befehlszeilenargument zu öffnen? Ich meine, welches ist die korrekte Verwendung:

%Vor%

oder

%Vor%     
zsero 18.06.2011, 13:26
quelle

3 Antworten

15

Der Konstruktor für ifstream verwendet nur eine const char * (was die Methode c_str() bietet.

Ich glaube, dass es einen neuen Konstruktor dafür gibt, der im kommenden Standard ein std::string benötigt, (edit) siehe diese Antwort .

Es könnte auch spezifisch für Ihre Implementierung sein.

    
jonsca 18.06.2011, 13:28
quelle
6

Dieses Buch ist ziemlich alt (zumindest die Ausgabe, die ich habe, ist ziemlich alt, und vielleicht auch deine.) Die iostream -Bibliothek ist viel älter als STL und die string -Klasse; frühere vrsions von iostream hatten nicht den Konstruktor string , das ist alles.

    
Ernest Friedman-Hill 18.06.2011 13:29
quelle
2

ifstream -Konstruktor verwendet den Dateinamen als const char * und nicht als C ++ string . Siehe dies . Die Funktion c_str() member gibt einen Zeiger const char * auf die Zeichenfolge zurück.

edit: Vielleicht unterstützt Ihr Compiler eine überladene Version dieses Konstruktors oder der Standard wurde aktualisiert.

    
N.R.S.Sowrabh 18.06.2011 13:29
quelle