Im C-Code mit der folgenden Zeile:
file.open(name);
Ein häufiger Fehler ist:
no matching function for call 'std::ifstream::open(std::string&)'
Dieses Problem tritt aufgrund älterer Versionen auf von C (vor C 11) unterstützte das Öffnen einer Datei mit einem std::string-Argument nicht. Für die Funktion open() war ein Zeichenarray oder eine Zeichenfolge im C-Stil erforderlich.
Um diesen Fehler zu beheben, kann man einen der folgenden Ansätze verwenden :
file.open(name.c_str());
std::ifstream file(name.c_str());
Dieser Ansatz eliminiert die Notwendigkeit, Konstruktion und zu trennen Öffnung.
Um außerdem sicherzustellen, dass die Funktion „loadNumbersFromFile()“ ihr Argument nicht ändert, ist es ratsam, vorbei zu gehen Verweis auf eine Konstante std::string stattdessen:
std::vector<int> loadNumbersFromFile(const std::string& name) { // ... }
Das obige ist der detaillierte Inhalt vonWarum schlägt „ifstream::open(std::string)' in älteren C-Versionen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!