看板 C_and_CPP 關於我們 聯絡資訊
以下是我的程式碼 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 想請問為什麼會有這個三個數字的差異 ----- Sent from JPTT on my iPad -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.63.65 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1698415544.A.C32.html
Richun: 你檔案用wc -l顯示的也是32563嗎?10/27 22:28
顯示32562 跟原檔getline得到的一樣
nh60211as: 你有試過只多一行嗎10/27 22:40
只多一行是32561 是正確的 ※ 編輯: bamboopole (61.70.63.65 臺灣), 10/27/2023 22:53:41 ※ 編輯: bamboopole (61.70.63.65 臺灣), 10/27/2023 22:54:43
nh60211as: 你對正確的定義怪怪的。getline是去讀換行符號來分出10/27 23:03
nh60211as: 一個line是什麼,所以就算是沒有內容的line也是一個li 10/27 23:03
nh60211as: ne10/27 23:03
nh60211as: 然後你去看cppreference的話可以看到getline的終止條10/27 23:05
nh60211as: 件是什麼,去比對一下你的輸入應該就可以知道行為正不10/27 23:05
nh60211as: 正確了10/27 23:05
wulouise: 先把最後兩行用什麼換行符號列出來10/28 00:27
longlongint: 編輯器空行的屁股沒有換行符號 所以要少算一行10/28 10:34
longlongint: 應該是說 空行那行什麼都沒有…10/28 10:34
感謝各位,我懂了 倒數第二行有換行符號,所以才會出現32563行 而最後一行沒有換行符號,所以是直接結束 ※ 編輯: bamboopole (180.217.202.238 臺灣), 10/28/2023 11:36:29