This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/52169] the ifstream readsome() method does not signal any bit on eof.
- From: "tom at kera dot name" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 08 Feb 2012 10:39:54 +0000
- Subject: [Bug libstdc++/52169] the ifstream readsome() method does not signal any bit on eof.
- Auto-submitted: auto-generated
- References: <bug-52169-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52169
Tomalak Geret'kal <tom at kera dot name> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tom at kera dot name
--- Comment #1 from Tomalak Geret'kal <tom at kera dot name> 2012-02-08 10:39:54 UTC ---
cplusplus.com is (a) not authoritative, (b) full of mistakes, and (c) otherwise
just awful.
Instead, we'll quote the standard(s):
[C++11: 27.7.2.3]:
streamsize readsome(char_type* s, streamsize n);
32/ Effects: Behaves as an unformatted input function (as described in
27.7.2.3, paragraph 1). After constructing a sentry object, if !good() calls
setstate(failbit) which may throw an exception, and return. Otherwise extracts
characters and stores them into successive locations of an array whose first
element is designated by s. If rdbuf()->in_avail() == -1, calls
setstate(eofbit) (which may throw ios_base::failure (27.5.5.4)), and extracts
no characters;
â If rdbuf()->in_avail() == 0, extracts no characters
â If rdbuf()->in_avail() > 0, extracts min(rdbuf()->in_avail(),n)).
33/ Returns: The number of characters extracted.
[C++03: 27.6.1.3]:
streamsize readsome(char_type* s, streamsize n);
30/ Effects: Behaves as an unformatted input function (as described in
27.6.1.3, paragraph 1). After constructing a sentry object, if !good() calls
setstate(failbit) which may throw an exception, and return. Otherwise extracts
characters and stores them into successive locations of an array whose first
element is designated by s. If rdbuf()->in_avail() == -1, calls
setstate(eofbit) (which may throw ios_base::failure (27.4.4.3)), and extracts
no characters;
â If rdbuf()->in_avail() == 0, extracts no characters
â If rdbuf()->in_avail() > 0, extracts min(rdbuf()->in_avail(),n)).
31/ Returns: The number of characters extracted.