2013-02-16 177 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。如果你这样做,你不必处理数组大小。