Article ID: 119393 - Last Review: April 24, 2006 - Revision: 2.1 BUG: Invalid Extraction from istrstream Does Not Set failbitThis article was previously published under Q119393 On This PageSYMPTOMS
If you extract an integer of an invalid octal value from istrstream,
0 is extracted and the ios::failbit is not set. In addition, the
ios::fail() function returns FALSE, incorrectly indicating that the
istrstream is valid. RESOLUTION
Use the manipulators (dec, hex, oct, binary, text) explicitly to set
the correct conversion base for the characters represented by the
stream.
STATUSMicrosoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. MORE INFORMATION
A scenario that produces an unexpected result, and which may also
reflect this problem, involves using the string "08" to initialize
the buffer used by the istrstream (or any string where the first
character is 0 and one of the following characters is greater than 7).
This string causes the istrstream extraction operator to load the int with 0 instead of the expected value. This is because when 0 is the leading character in a number and it is not followed by an x or X, the number is treated as an octal number. Therefore, only the characters 0 through 7 after the leading 0 are valid. Sample Code for Visual C++ 6.0 or earlier versionsSample Code for Visual C++ .NET 2002 or for Visual C++ .NET 2003APPLIES TO
| Article Translations
|
Back to the top
