Desculpe se isso é bastante noobish, mas eu sou muito novo em C ++. Estou tentando abrir um arquivo e lê-lo 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;
}
No entanto, estou recebendo o seguinte erro: não tenho certeza de como corrigir:
variable 'std::ifstream ifs' has initializer but incomplete type
Respostas muito apreciadas. Note que nunca esqueci #include <fstream>
, pois muitos obtiveram o erro devido ao esquecimento de incluir o cabeçalho.
EDITAR:
Acontece que eu realmente esqueci de incluir fstream
, mas esqueci devido a mover a função para outro arquivo.
c++
fstream
return-type
beakr
fonte
fonte
<iostream>
. Só<fstream>
vai fazer.Respostas:
Isso parece ter sido respondido -
#include <fstream>
.A mensagem significa: -
incomplete type
- a classe não foi definida com uma classe completa. O compilador viu declarações como asclass ifstream;
que permitem entender que uma classe existe, mas não sabe quanta memória a classe ocupa.A declaração direta permite que o compilador compreenda melhor:
Ele entende que a classe existe e pode enviar ponteiros e referências através do código sem poder criar a classe, ver quaisquer dados dentro da classe ou chamar qualquer método da classe.
O
has initializer
parece um estranho pouco, mas está dizendo que o objeto incompleta está sendo criado.fonte
#include <fstream>
, não#include <ifstream>