我有一個包含文件中以下行:爲什麼函數getline返回空行,如果不存在
5556
0 bla.dxf
1 blub.dxf
2 buzz.dxf
的數字和文字是由每個單個標籤分隔,有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
的行解析有什麼誤解,以及如何避免出現空行?
'operator >>'在輸入緩衝區中留下新的行字符 - 請參閱[本答案](http://stackoverflow.com/a/10842558/1374437)。 – 2012-07-09 13:04:15
剛剛找到以下解釋我的錯誤:http://stackoverflow.com/a/7787253/484230。精髓是:不要混在一起,否則你會陷入困境 – Martin 2012-07-09 13:06:45