これがかなり初心者の方には申し訳ありませんが、私は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
を含めることを実際に忘れていましたが、関数を別のファイルに移動したため忘れていました。
これは答えられているようです-#include <fstream>
。
メッセージの意味は:-
incomplete type
-クラスは完全なクラスで定義されていません。コンパイラーは、クラスが存在することを理解できるようにするclass ifstream;
などのステートメントを見てきましたが、クラスが占有するメモリー量を知りません。
前方宣言により、コンパイラは次のことを理解できます。
void BindInput( ifstream & inputChannel );
クラスの存在を理解し、クラスを作成したり、クラス内のデータを参照したり、クラスのメソッドを呼び出したりすることなく、コードを介してポインターと参照を送信できます。
has initializer
は少し無関係のようですが、不完全なオブジェクトが作成されていると言っています。