Heim >Backend-Entwicklung >C++ >Warum funktioniert mein „ifstream.open()' nicht mit einem String in Dev-C?

Warum funktioniert mein „ifstream.open()' nicht mit einem String in Dev-C?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-02 20:53:14250Durchsuche

Why Doesn't My `ifstream.open()` Work with a 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:

  1. 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());
  2. 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&amp; 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn