我正在使用FileReader函數,該函數根據行執行特定的功能。當文件的最後一行爲空時的停止條件C++
但是,由於某種原因,我想要閱讀的文件的最後一行總是空白的,這會弄亂我的程序。
有沒有辦法告訴程序停止在那一點?
當試圖運行它,我得到的輸出
啓動程序如下: 終止叫做拋出 '的std :: out_of_range' 的實例以後有什麼():basic_string的:: SUBSTR - - 1中止
我知道這是因爲空行,因爲我告訴了計劃,讓每行特定的元素,且這些元素是在該行空。
我正在使用FileReader函數,該函數根據行執行特定的功能。當文件的最後一行爲空時的停止條件C++
但是,由於某種原因,我想要閱讀的文件的最後一行總是空白的,這會弄亂我的程序。
有沒有辦法告訴程序停止在那一點?
當試圖運行它,我得到的輸出
啓動程序如下: 終止叫做拋出 '的std :: out_of_range' 的實例以後有什麼():basic_string的:: SUBSTR - - 1中止
我知道這是因爲空行,因爲我告訴了計劃,讓每行特定的元素,且這些元素是在該行空。
據我瞭解,你有這樣的事情:
std::ifstream file("file.txt");
std::string line;
while(getline(file,line)) {
//read the line
}
我也收集(糾正我,如果我錯了),在文件的最後,你有兩個新行,如下所示:
line1\nline2\n\n
如果是這樣的話,肯定while循環體意志在最後一個空行來執行。爲了解決這個問題,只是忽略空行:
while(getline(file,line)) {
if (line == "") continue;
//read the line
}
如果這也不行,那是因爲我誤解你的問題,在這種情況下,請提供一些更多的細節。
這工作!非常感謝你,親切的先生。你救了我脫掉頭髮! – 2013-02-25 05:38:08
這將有助於我們看到展示您遇到的問題的東西。理想情況下是一個簡單的自包含示例,或者至少是現有代碼的一部分。 – 2013-02-25 04:32:04
你是在問一個線是空白時怎麼什麼也不做?還是你問如何知道一條線是最後一條線? – 2013-02-25 04:33:20
@DrewDormann更具體地說,我想告訴計算機在到達該行時關閉文件。不僅僅是考慮到它。 – 2013-02-25 04:35:38