很抱歉,如果这太粗俗了,但我对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
,但由于将函数移动到另一个文件中,我忘记了这一点。
发布于 2015-09-18 22:26:03
这似乎得到了答案-- #include <fstream>
。
该讯息的意思是:
incomplete type
-未使用完整类定义该类。编译器已经看到了诸如class ifstream;
之类的语句,这些语句允许编译器理解类的存在,但不知道该类占用了多少内存。
前向声明允许编译器更好地理解:-
void BindInput( ifstream & inputChannel );
它理解类的存在,并且可以通过代码发送指针和引用,而无需创建类、查看类中的任何数据或调用类的任何方法。
has initializer
看起来有点无关紧要,但它表示正在创建不完整的对象。
https://stackoverflow.com/questions/15080231
复制相似问题