次の行を含むファイルがあります。
5556
0 bla.dxf
1 blub.dxf
2 buzz.dxf
数字とテキストはそれぞれ1つのタブで区切られ、5556の後に空白文字はありません。解析には次のコードが使用されます。
int main(int, char**){
std::ifstream file("test.bld");
std::string buildingName;
file >> buildingName;
std::cout << buildingName << std::endl;
std::string buf;
while(getline(file, buf)) {
if(buf.empty()){std::cout << "String was empty"<<std::endl;}
else std::cout << buf << std::endl;
}
return 0;
}
ファイルを解析すると、明らかに何もありませんが、空の行が表示されます。出力は次のようになります。
5556
String was empty
0 bla.dxf
1 blub.dxf
2 buzz.dxf
これは最小限の例にすぎません。ファイル全体とパーサーはより複雑であり、最初の要素には直接解析を使用し、残りの要素にはgetlineを使用したいと思います。行の解析について私は何を誤解してgetline
いますか?また、空の行を取得しないようにするにはどうすればよいですか?