Maaf jika ini sangat noobish, tapi saya cukup baru mengenal C ++. Saya mencoba membuka file dan membacanya menggunakan 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;
}
Namun, saya mendapatkan kesalahan berikut, saya tidak yakin bagaimana cara memperbaikinya:
variable 'std::ifstream ifs' has initializer but incomplete type
Jawaban sangat dihargai. Perhatikan bahwa saya tidak pernah lupa #include <fstream>
, karena banyak yang mendapatkan kesalahan karena lupa menyertakan header.
EDIT:
Ternyata saya benar-benar lupa untuk memasukkannya fstream
, tapi saya lupa karena memindahkan fungsi ke file lain.
c++
fstream
return-type
paruhr
sumber
sumber
<iostream>
. Hanya<fstream>
akan dilakukan.Jawaban:
Ini sepertinya dijawab -
#include <fstream>
.Pesan itu berarti: -
incomplete type
- kelas belum ditentukan dengan kelas lengkap. Kompilator telah melihat pernyataan seperticlass ifstream;
yang memungkinkannya untuk memahami bahwa suatu kelas ada, tetapi tidak mengetahui berapa banyak memori yang digunakan kelas tersebut.Deklarasi maju memungkinkan kompilator untuk lebih memahami: -
void BindInput( ifstream & inputChannel );
Ia memahami bahwa kelas itu ada, dan dapat mengirim petunjuk dan referensi melalui kode tanpa dapat membuat kelas, melihat data apa pun di dalam kelas, atau memanggil metode kelas apa pun.
The
has initializer
tampaknya asing sedikit, tetapi mengatakan bahwa obyek yang tidak lengkap sedang dibuat.sumber
#include <fstream>
, bukan#include <ifstream>