Tut mir leid, wenn das ziemlich noobisch ist, aber ich bin ziemlich neu in C ++. Ich versuche, eine Datei zu öffnen und zu lesen, indem ich ifstream
:
vector<string> load_f(string file) {
vector<string> text;
ifstream ifs(file);
string buffer, str_line;
int brackets = 0;
str_line = "";
while ( getline(ifs, buffer) ) {
buffer = Trim( buffer );
size_t s = buffer.find_first_of("()");
if (s == string::npos) str_line += "" + buffer;
else {
while ( s != string::npos ) {
str_line += "" + buffer.substr(0, s + 1);
brackets += (buffer[s] == '(' ? 1 : -1);
if ( brackets == 0 ) {
text.push_back( str_line );
str_line = "";
}
buffer = buffer.substr(s + 1);
s = buffer.find_first_of("()");
}
}
}
return text;
}
Ich erhalte jedoch den folgenden Fehler. Ich bin mir nicht ganz sicher, wie ich ihn beheben soll:
variable 'std::ifstream ifs' has initializer but incomplete type
Antworten sehr geschätzt. Beachten Sie, dass ich es nie vergessen habe #include <fstream>
, da viele den Fehler erhalten haben, weil sie einfach vergessen haben, den Header einzuschließen.
BEARBEITEN:
Es stellte sich heraus, dass ich das Einfügen tatsächlich vergessen hatte fstream
, aber ich hatte es vergessen, weil ich die Funktion in eine andere Datei verschoben hatte.
c++
fstream
return-type
beakr
quelle
quelle
<iostream>
. Nur reicht<fstream>
.Antworten:
Dies scheint beantwortet zu sein -
#include <fstream>
.Die Nachricht bedeutet: -
incomplete type
- Die Klasse wurde nicht mit einer vollständigen Klasse definiert. Der Compiler hat Anweisungen gesehen, mitclass ifstream;
denen er verstehen kann, dass eine Klasse vorhanden ist, weiß jedoch nicht, wie viel Speicher die Klasse belegt.Die Vorwärtsdeklaration ermöglicht es dem Compiler, Folgendes zu verstehen:
Es versteht, dass die Klasse vorhanden ist, und kann Zeiger und Referenzen über Code senden, ohne die Klasse erstellen, Daten innerhalb der Klasse anzeigen oder Methoden der Klasse aufrufen zu können.
Das
has initializer
scheint etwas irrelevant, sagt aber, dass das unvollständige Objekt erstellt wird.quelle
#include <fstream>
, nicht#include <ifstream>