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:
oder
%Vor% 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.
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.
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.
Tags und Links string c++ visual-studio-2010 command-line-arguments