2013-04-18 27 views
0

我想明白下面的功能到底在做什麼。它用於將文本文件讀入結構,稱爲AEntry,它只包含四個整數。該函數如何將文本讀入結構?

該文件包含行列表。每行包含四個以空格分隔的整數(或標籤)。

當這個函數被調用的istream線和AEntrystruct傳遞英寸

我的問題是怎麼做限制,spacess或標籤,被過濾掉?或者我的理解是錯誤的。

istream& operator>>(istream &stream, AEntry& val) 
{ 
    stream >> val.kv; 
    stream >> val.col; 
    stream >> val.bo; 
    stream >> val.Offset; 
    return stream; 
} 
+1

空白字符是通過內置'運算符>>'重載提取的。這些行爲如何解釋[這裏](http://en.cppreference.com/w/cpp/concept/FormattedInputFunction)。 – jrok

+0

這不是一個C問題。 – 2013-04-18 20:56:42

+0

我無法發佈這個問題,直到我添加C標籤。只有C++標籤不符合「質量標準」。我不知道爲什麼。 – 5YrsLaterDBA

回答

3

他們過濾掉,因爲這是的istream::operator>>默認重載的行爲。它們停在空白處並放棄它,而不是將它合併到提取的輸出中。

+1

+1 ..並在下一個格式化提取開始時忽略空格(操作符'skipws'不能承受)。 – WhozCraig

+0

@WhozCraig真......很多細微的細節。 Jrok在他的評論中提供的鏈接對我來說是一個很好的閱讀。 – 2013-04-18 21:01:20

+0

標籤「\ t」怎麼樣?像空間一樣? – 5YrsLaterDBA

相關問題