[問題] getline讀檔案多一行

作者: bamboopole (竹竿)   2023-10-27 22:05:42
以下是我的程式碼
std::ifstream file(dataset);
std::vector<std::vector<std::string>> dataString;
std::string line = "";
while(getline(file, line)){
std::vector <std::string> vec;
boost::algorithm::split(vec, line, boost::is_any_of(delimeter));
dataString.push_back(vec);
}
file.close();
圖片是我讀的檔案的最後端
https://i.imgur.com/2IJwDNB.jpg
檔案總行數是32563,最後兩行是空白的
我使用getline來讀檔
但我發現我讀出來的vector長度是32562
然後如果我把讀的檔案的最後兩個空白行刪掉,結果又是正確的32561
想請問為什麼會有這個三個數字的差異
作者: Richun (解放左手的OO之力)   2023-10-27 22:28:00
你檔案用wc -l顯示的也是32563嗎?
作者: nh60211as   2023-10-27 22:40:00
你有試過只多一行嗎你對正確的定義怪怪的。getline是去讀換行符號來分出一個line是什麼,所以就算是沒有內容的line也是一個line然後你去看cppreference的話可以看到getline的終止條件是什麼,去比對一下你的輸入應該就可以知道行為正不正確了
作者: wulouise (在線上!=在電腦前)   2023-10-28 00:27:00
先把最後兩行用什麼換行符號列出來
作者: longlongint (華哥爾)   2023-10-28 10:34:00
編輯器空行的屁股沒有換行符號 所以要少算一行應該是說 空行那行什麼都沒有…

Links booklink

Contact Us: admin [ a t ] ucptt.com