Извините, если это довольно нудистно, но я довольно плохо знаком с C ++. Я пытаюсь открыть файл и прочитать его с помощью 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;
}
Тем не менее, я получаю следующую ошибку, я не совсем уверен, как исправить:
variable 'std::ifstream ifs' has initializer but incomplete type
Ответы очень ценятся. Обратите внимание, что я никогда не забывал #include <fstream>
, так как многие получили ошибку из-за того, что просто забыли включить заголовок.
РЕДАКТИРОВАТЬ:
Оказывается, я действительно забыл включить fstream
, но я забыл из-за перемещения функции в другой файл.
c++
fstream
return-type
beakr
источник
источник
<iostream>
. Только<fstream>
сделаю.Ответы:
Это, кажется, ответили
#include <fstream>
.Сообщение означает: -
incomplete type
- класс не был определен с полным классом. Компилятор видел такие выражения,class ifstream;
которые позволяют ему понять, что класс существует, но не знает, сколько памяти занимает этот класс.Форвардное объявление позволяет компилятору больше понимать:
Он понимает, что класс существует, и может отправлять указатели и ссылки через код, не имея возможности создавать класс, просматривать какие-либо данные в классе или вызывать любые методы класса.
has initializer
Кажется немного посторонним, но говорят о том , что неполный объект создаются.источник
#include <fstream>
, нет#include <ifstream>