Lo siento si esto es bastante novato, pero soy bastante nuevo en C ++. Estoy tratando de abrir un archivo y leerlo usando 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;
}
Sin embargo, recibo el siguiente error No estoy muy seguro de cómo solucionarlo:
variable 'std::ifstream ifs' has initializer but incomplete type
Respuestas muy apreciadas. Tenga en cuenta que nunca lo olvidé #include <fstream>
, ya que muchos han recibido el error simplemente por olvidar incluir el encabezado.
EDITAR:
Resulta que en realidad olvidé incluir fstream
, pero lo había olvidado debido a que moví la función a otro archivo.
c++
fstream
return-type
beakr
fuente
fuente
<iostream>
. Solo<fstream>
lo haremos.Respuestas:
Esto parece ser respondido -
#include <fstream>
.El mensaje significa: -
incomplete type
- la clase no se ha definido con una clase completa. El compilador ha visto declaraciones como lasclass ifstream;
que le permiten comprender que existe una clase, pero no sabe cuánta memoria ocupa la clase.La declaración directa permite al compilador tener más sentido de: -
Entiende que la clase existe y puede enviar punteros y referencias a través del código sin poder crear la clase, ver ningún dato dentro de la clase o llamar a cualquier método de la clase.
El
has initializer
parece una extraña poco, pero está diciendo que se está creando el objeto incompleta.fuente
#include <fstream>
, no#include <ifstream>