Heim >Backend-Entwicklung >C++ >Warum funktioniert mein „ifstream.open()' nicht mit einem String in Dev-C?
Öffnen-Funktion für ifstream in dev cpp nicht gefunden
Der bereitgestellte Code versucht, eine Datei mit file.open(name) zu öffnen, wobei Name ist eine Zeichenfolge. Dieser Code lässt sich jedoch erfolgreich in Visual Studio (VS) kompilieren, jedoch nicht in Dev CPP. Die Fehlermeldung weist darauf hin, dass es keine passende Funktion für die Open-Methode mit einem String-Argument gibt.
Die Hauptursache für dieses Problem ist, dass die Unterstützung für die Verwendung eines String-Arguments in der Open-Funktion erst in C 11 eingeführt wurde Während VS C 11 unterstützt, scheint dev cpp eine ältere Version des C-Standards zu verwenden, die dies nicht enthält Funktion.
Lösung:
Um dieses Problem zu beheben, gibt es zwei Ansätze:
Verwenden Sie c_str( ): Konvertieren Sie das String-Argument mit der c_str()-Methode in ein Zeichenarray und übergeben Sie dieses Array an die Open Funktion:
file.open(name.c_str());
Konstruktor verwenden: Alternativ können Sie den Konstruktor von ifstream verwenden, der ein String-Argument akzeptiert:
std::ifstream file(name.c_str());
Um unnötiges Kopieren zu vermeiden, wird außerdem empfohlen, das String-Argument per Konstante an loadNumbersFromFile() zu übergeben Referenz:
std::vector<int> loadNumbersFromFile(std::string const& name)
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein „ifstream.open()' nicht mit einem String in Dev-C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!