2013-02-25 48 views
0

我正在使用FileReader函數,該函數根據行執行特定的功能。當文件的最後一行爲空時的停止條件C++

但是,由於某種原因,我想要閱讀的文件的最後一行總是空白的,這會弄亂我的程序。

有沒有辦法告訴程序停止在那一點?

當試圖運行它,我得到的輸出

啓動程序如下: 終止叫做拋出 '的std :: out_of_range' 的實例以後有什麼():basic_string的:: SUBSTR - - 1中止

我知道這是因爲空行,因爲我告訴了計劃,讓每行特定的元素,且這些元素是在該行空。

+1

這將有助於我們看到展示您遇到的問題的東西。理想情況下是一個簡單的自包含示例,或者至少是現有代碼的一部分。 – 2013-02-25 04:32:04

+3

你是在問一個線是空白時怎麼什麼也不做?還是你問如何知道一條線是最後一條線? – 2013-02-25 04:33:20

+0

@DrewDormann更具體地說,我想告訴計算機在到達該行時關閉文件。不僅僅是考慮到它。 – 2013-02-25 04:35:38

回答

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 
} 

如果這也不行,那是因爲我誤解你的問題,在這種情況下,請提供一些更多的細節。

+1

這工作!非常感謝你,親切的先生。你救了我脫掉頭髮! – 2013-02-25 05:38:08

相關問題