2013-02-16 113 views
1

成員函數istream& istream::getline(char* s, streamsize n, char delim);使您能夠從數據流中提取字符,直到3件事情之一發生:的std ::函數getline:分隔字符與字符數

  1. 指定定界符被發現,
  2. n - 1字符從流中讀取,或
  3. 一個EOF或錯誤時

顯然,條件3(出現錯誤)容易檢測到。但是,來電者如何區分條件(1)和(2)?你怎麼知道劃界角色是不是?可能有n - 1個字符被讀取,但未找到分隔字符。

回答

0

您可以使用std::istream::gcount()來了解讀取的字符數,並將其與n進行比較以找出您的問題的答案。另外,可以搜索輸出緩衝區來確定分隔符。

1

你可以不問這個問題。使用getline(std::basic_istream&, std::basic_string&, Elem delim);。或者如果你使用C++ 11,那就是getline(std::basic_istream&&, std::basic_string&, Elem delim);。也就是說,讀入std::string。如果你這樣做,你不必處理數組大小。

相關問題