2014-11-23 28 views
0

我看了一下這個例子,在istream get方法中從文件流中提取字符。爲什麼我的代碼不識別空白行C++

基本上,我不希望我的程序讀取一個空行,但它跳到下一行,並給出一個錯誤,它不能讀取下一行 - 當它不應該讀空行。

不管怎麼說,這是我跟着http://www.cplusplus.com/reference/istream/istream/get/教程,這是我的代碼

is.get(c) 
if(c == '\0') 
{ 
    cout << "Blank line" << endl; 
} 
else 
{ 
is.getline(...); 
} 

ignore whitespace... 
is.getline(...); 
+2

這不能是你的代碼:它不能編譯。 – didierc 2014-11-23 21:39:16

+0

使用getline將行讀入字符串。如果你在while循環中做,你可以基本檢查字符串的大小,看它是否是空行。要讀取字符,可以將該字符串用作數組(如果字符串是'line',那麼line [2]是第二個字符)。 – learningToCode 2014-11-23 21:39:56

+0

@learningToCode:實際上,當數組以索引0開始時,「line [2]」是第三個字符。 – 2014-11-23 21:46:44

回答

6

你似乎是的印象是一個空行以某種方式由空字符表示下。不是這樣。一個空白行只包含行尾字符('\n',最初可能是行結束序列,但在系統中它很重要,行結束序列在非std::ios_base::binary模式下轉換爲行結束字符)。要檢測空行,您可以使用std::getline()或可能使用std::istream::getline()來讀取一行,並檢查結果是否爲空。

相關問題