blob: 423e49b3d3f69c8c52a8f1da20d94f3b19f327d1 [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed
with this work for additional information regarding copyright
ownership. The ASF licenses this file to you under the Apache
License, Version 2.0 (the License); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the License for the specific language governing
permissions and limitations under the License.
Copyright 1999-2007 Rogue Wave Software, Inc.
-->
<HTML>
<HEAD>
<TITLE>ios_base</TITLE>
<LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="ios-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="ios-base--failure.html"><IMG SRC="images/bnext.gif" WIDTH=25 HEIGHT=21 ALT="Next file" BORDER=O></A><DIV CLASS="DOCUMENTNAME"><B>Apache C++ Standard Library Reference Guide</B></DIV>
<H2>ios_base</H2>
<P><B>Library:</B>&nbsp;&nbsp;<A HREF="2-11.html">Input/output</A></P>
<PRE><HR><B><I>Does not inherit</I></B><HR></PRE>
<UL>
<LI><A HREF="#sec1">Local Index</A></LI>
<LI><A HREF="#sec2">Summary</A></LI>
<LI><A HREF="#sec3">Synopsis</A></LI>
<LI><A HREF="#sec4">Description</A></LI>
<LI><A HREF="#sec5">Interface</A></LI>
<LI><A HREF="#sec6">Member Types</A></LI>
<LI><A HREF="#sec7">Protected Constructor</A></LI>
<LI><A HREF="#sec8">Destructors</A></LI>
<LI><A HREF="#sec9">Public Member Functions</A></LI>
<LI><A HREF="#failure">Class failure</A></LI>
<LI><A HREF="#init">Class Init</A></LI>
<LI><A HREF="#sec12">Nonmember Functions</A></LI>
<LI><A HREF="#sec13">See Also</A></LI>
<LI><A HREF="#sec14">Standards Conformance</A></LI>
</UL>
<A NAME="sec1"><H3>Local Index</H3></A>
<H4>Members</H4>
<UL><TABLE CELLPADDING=3>
<TR><TD VALIGN=top>
<A HREF="#idx673">event</A><BR>
<A HREF="#idx674">event_callback</A><BR>
<A HREF="#idx693">failure()</A><BR>
<A HREF="#idx677">flags()</A><BR>
<A HREF="#idx669">fmtflags</A><BR>
<A HREF="#idx679">getloc()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx680">imbue()</A><BR>
<A HREF="#idx670">iostate</A><BR>
<A HREF="#idx675">ios_base()</A><BR>
<A HREF="#idx681">iword()</A><BR>
<A HREF="#idx671">openmode</A><BR>
<A HREF="#idx682">precision()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx684">pword()</A><BR>
<A HREF="#idx685">register_callback()</A><BR>
<A HREF="#idx672">seekdir</A><BR>
<A HREF="#idx686">setf()</A><BR>
<A HREF="#idx688">sync_with_stdio()</A><BR>
<A HREF="#idx689">unsetf()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx694">what()</A><BR>
<A HREF="#idx690">width()</A><BR>
<A HREF="#idx692">xalloc()</A><BR>
<A HREF="#idx676">~ios_base()</A><BR>
</TD></TR>
</TABLE></UL>
<H4>Non-Members</H4>
<UL><TABLE CELLPADDING=3>
<TR><TD VALIGN=top>
<A HREF="#idx695">boolalpha()</A><BR>
<A HREF="#idx696">dec()</A><BR>
<A HREF="#idx697">fixed()</A><BR>
<A HREF="#idx698">hex()</A><BR>
<A HREF="#idx699">internal()</A><BR>
<A HREF="#idx700">left()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx701">noboolalpha()</A><BR>
<A HREF="#idx702">noshowbase()</A><BR>
<A HREF="#idx703">noshowpoint()</A><BR>
<A HREF="#idx704">noshowpos()</A><BR>
<A HREF="#idx705">noskipws()</A><BR>
<A HREF="#idx706">nounitbuf()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx707">nouppercase()</A><BR>
<A HREF="#idx708">oct()</A><BR>
<A HREF="#idx709">right()</A><BR>
<A HREF="#idx710">scientific()</A><BR>
<A HREF="#idx711">showbase()</A><BR>
<A HREF="#idx712">showpoint()</A><BR>
</TD>
<TD VALIGN=top><A HREF="#idx713">showpos()</A><BR>
<A HREF="#idx714">skipws()</A><BR>
<A HREF="#idx715">unitbuf()</A><BR>
<A HREF="#idx716">uppercase()</A><BR>
</TD></TR>
</TABLE></UL>
<A NAME="sec2"><H3>Summary</H3></A>
<P>Base class that defines member types and maintains data for classes that inherit from it</P>
<A NAME="sec3"><H3>Synopsis</H3></A>
<PRE>#include &lt;ios&gt;
namespace std {
class ios_base;
}
</PRE>
<A NAME="sec4"><H3>Description</H3></A>
<P>The class <B><I>ios_base</I></B> defines several member types:</P>
<UL>
<LI><P CLASS="LIST">A class <B><I>failure</I></B> derived from <B><I><A HREF="exception.html">exception</A></I></B></P></LI>
<LI><P CLASS="LIST">A class <B><I>Init</I></B></P></LI>
<LI><P CLASS="LIST">Three <B><I><A HREF="bitmasktypes.html">Bitmask Types</A></I></B>: <SAMP>fmtflags</SAMP>, <SAMP>iostate</SAMP>, and <SAMP>openmode</SAMP></P></LI>
<LI><P CLASS="LIST">Two enumerated types: <SAMP>seekdir</SAMP> and <SAMP>event</SAMP></P></LI>
</UL>
<P>It maintains several kinds of data:</P>
<UL>
<LI><P CLASS="LIST">Control information that influences how to interpret (format) input sequences and how to generate (format) output sequences</P></LI>
<LI><P CLASS="LIST">Locale object used within the stream classes</P></LI>
<LI><P CLASS="LIST">Arrays of user data used for storage management </P></LI>
<LI><P CLASS="LIST">A number of static constant data members </P></LI>
<LI><P CLASS="LIST">Additional information that is stored by the program for its private use</P></LI>
</UL>
<A NAME="sec5"><H3>Interface</H3></A>
<UL><PRE>namespace std {
class ios_base {
public:
class failure;
typedef T1 fmtflags;
static const fmtflags boolalpha;
static const fmtflags dec;
static const fmtflags fixed;
static const fmtflags hex;
static const fmtflags internal;
static const fmtflags left;
static const fmtflags oct;
static const fmtflags right;
static const fmtflags scientific;
static const fmtflags showbase;
static const fmtflags showpoint;
static const fmtflags showpos;
static const fmtflags skipws;
static const fmtflags unitbuf;
static const fmtflags uppercase;
static const fmtflags adjustfield;
static const fmtflags basefield;
static const fmtflags floatfield;
typedef T2 iostate;
static const iostate badbit;
static const iostate eofbit;
static const iostate failbit;
static const iostate goodbit;
typedef T3 openmode;
static const openmode app;
static const openmode ate;
static const openmode binary;
static const openmode in;
static const openmode out;
static const openmode trunc;
static const openmode nocreate;
static const openmode noreplace;
enum T4 seekdir;
static const seekdir beg;
static const seekdir cur;
static const seekdir end;
class Init;
fmtflags flags () const;
fmtflags flags (fmtflags);
fmtflags setf (fmtflags);
fmtflags setf (fmtflags, fmtflags);
void unsetf (fmtflags);
streamsize precision () const;
streamsize precision (streamsize);
streamsize width () const;
streamsize width (streamsize);
locale imbue (const locale&amp;);
locale getloc () const;
static int xalloc ();
long&amp; iword (int);
void*&amp; pword (int);
virtual ~ios_base();
enum event { erase_event, imbue_event, copyfmt_event };
typedef void (*event_callback)(event, ios_base&amp;, int);
void register_callback (event_call_back, int);
static bool sync_with_stdio (bool = true);
protected:
ios_base();
};
ios_base&amp; boolalpha (ios_base&amp;);
ios_base&amp; noboolalpha (ios_base&amp;);
ios_base&amp; showbase (ios_base&amp;);
ios_base&amp; noshowbase (ios_base&amp;);
ios_base&amp; showpoint (ios_base&amp;);
ios_base&amp; noshowpoint (ios_base&amp;);
ios_base&amp; showpos (ios_base&amp;);
ios_base&amp; noshowpos (ios_base&amp;);
ios_base&amp; skipws (ios_base&amp;);
ios_base&amp; noskipws (ios_base&amp;);
ios_base&amp; uppercase (ios_base&amp;);
ios_base&amp; nouppercase (ios_base&amp;);
ios_base&amp; internal (ios_base&amp;);
ios_base&amp; left (ios_base&amp;);
ios_base&amp; right (ios_base&amp;);
ios_base&amp; dec (ios_base&amp;);
ios_base&amp; hex (ios_base&amp;);
ios_base&amp; oct (ios_base&amp;);
ios_base&amp; fixed (ios_base&amp;);
ios_base&amp; scientific (ios_base&amp;);
ios_base&amp; unitbuf (ios_base&amp;);
ios_base&amp; nounitbuf (ios_base&amp;);
}
</PRE></UL>
<A NAME="sec6"><H3>Member Types</H3></A>
<A NAME="idx669"></A><PRE><B>fmtflags</B></PRE>
<UL>
<P>The type <SAMP>fmtflags</SAMP> is a bitmask type. See <B><I>Bitmask Type</I></B> for more information. Setting its elements has the following effects:</P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>showpos</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Generates a + sign in nonnegative generated numeric output.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>showbase</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Generates a prefix indicating the numeric base of generated integer output</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>uppercase</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Replaces certain lowercase letters with their uppercase equivalents in generated output</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>showpoint</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Generates a decimal-point character unconditionally in generated floating-point output</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>boolalpha</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Inserts and extracts bool type in alphabetic format</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>unitbuf</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Flushes output after each output operation</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>internal</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Adds fill characters at a designated internal point in certain generated output. If no such point is designated, it's identical to <SAMP>right</SAMP>.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>left</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Adds fill characters on the right (final positions) of certain generated output</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>right</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Adds fill characters on the left (initial positions) of certain generated output</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>dec</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Converts integer input or generates integer output in decimal base</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>hex</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Converts integer input or generates integer output in hexadecimal base</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>oct</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Converts integer input or generates integer output in octal base</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>fixed</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Generates floating-point output in fixed-point notation</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>scientific</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Generates floating-point output in scientific notation</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>skipws </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Skips leading white space before certain input operation.</P></TD></TR>
</TABLE></UL>
<P>The following constants are also defined: </P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>adjustfield</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"> <SAMP>left | right | internal</SAMP></P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>basefield</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"> <SAMP>dec | hex | oct</SAMP></P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>floatfield</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"> <SAMP>scientific | fixed</SAMP></P></TD></TR>
</TABLE></UL>
</UL>
<A NAME="idx670"></A><PRE>
<B>iostate</B></PRE>
<UL>
<P>The type <SAMP>iostate</SAMP> is a bitmask type. See <B><I><A HREF="bitmasktypes.html">Bitmask Types</A></I></B> for more information. Setting its elements has the following effects:</P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>badbit </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Indicates a loss of integrity in an input or output sequence.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>eofbit </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Indicates that an input operation reached the end of an input sequence.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>failbit </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Indicates that an input operation failed to read the expected characters, or that an output operation failed to generate the desired characters.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>goodbit</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">Initial stream state, no other bit is set. </P></TD></TR>
</TABLE></UL>
</UL>
<A NAME="idx671"></A><PRE><B>openmode</B></PRE>
<UL>
<P>The type <SAMP>openmode</SAMP> is a bitmask type. See <B><I><A HREF="bitmasktypes.html">Bitmask Types</A></I></B> for more information. Setting its elements has the following effects:</P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>app </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Attempts to seek to the end of the file immediately before each write. Each seek and the subsequent write are performed as a single atomic operation.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>ate </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Attempts to seek to the end of the file immediately after opening. The opening and the subsequent seek may be performed as two operations.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>binary </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Performs input and output in binary mode rather than text mode. In binary mode the stream treats the contents of the file as a sequence of bytes without interpreting in any special way, certain sequences of characters such as carriage returns and line feeds.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>in </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Opens for input.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>out </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Opens for output.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>trunc </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Attempts to truncate an existing file to 0 size immediately after opening. The file must be opened for output (i.e., with <SAMP>out</SAMP>). The opening and the subsequent truncation are performed as a single atomic operation.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>nocreate </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Successfully opens the file if and only if a file with that name already exists. The checking for the file's existence and its subsequent creation are performed as a single atomic operation.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>noreplace </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Successfully creates the file if and only if a file with that name does not already exist and the file is being opened for output (i.e., with <SAMP>out</SAMP>). The checking for the file's existence and its subsequent creation are performed as a single atomic operation.</P></TD></TR>
</TABLE></UL>
</UL>
<BLOCKQUOTE><HR><B>
NOTE -- The nocreate and noreplace elements are not part of the C++ Standard, but are provided as an extension. See <A HREF="B.html">Appendix&nbsp;B</A>, for a complete list of extensions of this implementation.
</B><HR></BLOCKQUOTE>
<A NAME="idx672"></A><PRE><B>seekdir</B></PRE>
<UL>
<P>The type <SAMP>seekdir</SAMP> is an enumerated type. Setting its elements has the following effects:</P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>beg </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Requests a seek relative to the beginning of the stream.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>cur </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Requests a seek relative to the current position within the sequence.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>end </P></TD>
<TD CLASS="LIST"><P CLASS="LIST"></SAMP>Requests a seek relative to the current end of the sequence.</P></TD></TR>
</TABLE></UL>
</UL>
<A NAME="idx673"></A><PRE><B>event </B></PRE>
<UL>
<P>Constants of the enumerated type <SAMP>event</SAMP> are passed as arguments to user-defined callback functions registered with the stream objects via <SAMP>register_callback()</SAMP>: </P>
<UL><TABLE CELLPADDING=3 BORDER=0>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>erase_event</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">The stream object is being erased. </P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>imbue_event</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">A new <B><I><A HREF="locale.html">locale</A></I></B> is being imbued in the stream object.</P></TD></TR>
<TR CLASS="LIST"><TD VALIGN="top" CLASS="LIST"><P CLASS="LIST"><SAMP>copyfmt_event</SAMP> </P></TD>
<TD CLASS="LIST"><P CLASS="LIST">The <SAMP>copyfmt()</SAMP> member function has been called on an object.</P></TD></TR>
</TABLE></UL>
</UL>
<A NAME="idx674"></A><PRE><B>event_callback</B></PRE>
<UL>
<P>The type <SAMP>event_callback</SAMP> is the type of the callback function used as a parameter in the function <SAMP>register_callback</SAMP>. These functions allow you to use the <SAMP>iword</SAMP>, <SAMP>pword</SAMP> mechanism in an exception-safe environment.</P>
</UL>
<A NAME="sec7"><H3>Protected Constructor</H3></A>
<A NAME="idx675"></A><PRE><B>ios_base</B>();</PRE>
<UL>
<P>The <B><I>ios_base</I></B> members have an indeterminate value after construction.</P>
</UL>
<A NAME="sec8"><H3>Destructors</H3></A>
<A NAME="idx676"></A><PRE>virtual
<B>~ios_base</B>();</PRE>
<UL>
<P>Destroys an object of class <B><I>ios_base</I></B>. Calls each registered callback pair <SAMP>(fn, index)</SAMP> as <SAMP>(*fn)(erase_event,*this, index)</SAMP> at such a time that any <B><I>ios_base</I></B> member function called from within <SAMP>fn</SAMP> has well-defined results.</P>
</UL>
<A NAME="sec9"><H3>Public Member Functions</H3></A>
<A NAME="idx677"></A><PRE>fmtflags
<B>flags</B>() const;</PRE>
<UL>
<P>Returns the format control information for both input and output.</P>
</UL>
<A NAME="idx678"></A><PRE>fmtflags
<B>flags</B>(fmtflags fmtfl); </PRE>
<UL>
<P>Sets <SAMP>flags()</SAMP> to <SAMP>fmtfl</SAMP> and returns the previous value of <SAMP>flags()</SAMP>.</P>
</UL>
<A NAME="idx686"></A><PRE>fmtflags
<B>setf</B>(fmtflags fmtfl); </PRE>
<UL>
<P>Sets <SAMP>flags()</SAMP> to <SAMP>(fmtfl | flags())</SAMP> and returns the previous value of <SAMP>flags()</SAMP>.</P>
</UL>
<A NAME="idx687"></A><PRE>fmtflags
<B>setf</B>(fmtflags fmtfl, fmtflags mask); </PRE>
<UL>
<P>Clears <SAMP>mask</SAMP> in <SAMP>flags()</SAMP>, sets <SAMP>(fmtfl &amp; mask)</SAMP> in <SAMP>flags()</SAMP>, and returns the previous value of <SAMP>flags()</SAMP>.</P>
</UL>
<A NAME="idx689"></A><PRE>void
<B>unsetf</B>(fmtflags mask); </PRE>
<UL>
<P>Clears <SAMP>mask</SAMP> in <SAMP>flags()</SAMP>.</P>
</UL>
<A NAME="idx679"></A><PRE>locale
<B>getloc</B>() const; </PRE>
<UL>
<P>Returns the imbued locale, which is used to perform locale-dependent input and output operations. The default locale, <SAMP>locale::locale()</SAMP>, is used if no other locale object has been imbued in the stream by a call to the <SAMP>imbue</SAMP> function.</P>
</UL>
<A NAME="idx680"></A><PRE>locale
<B>imbue</B>(const locale&amp; loc); </PRE>
<UL>
<P>Saves the value returned by <SAMP>getloc()</SAMP>, then assigns <SAMP>loc</SAMP> to a private variable and calls each registered callback pair <SAMP>(fn, index)</SAMP> as <SAMP>(*fn)(imbue_event,*this, index)</SAMP>. It then returns the previously saved value. </P>
</UL>
<A NAME="idx681"></A><PRE>long&amp;
<B>iword</B>(int idx); </PRE>
<UL>
<P>If <SAMP>iarray</SAMP> is a null pointer, allocates an array of <SAMP>long</SAMP>s of sufficient size, and stores a pointer to its first element in <SAMP>iarray</SAMP>. The function then extends the array pointed to by <SAMP>iarray</SAMP>, as necessary, to include the element <SAMP>iarray[idx]</SAMP>. Each newly allocated element of the array is initialized to <SAMP>0</SAMP>. The reference returned may become invalid after another call to the object's <SAMP>iword()</SAMP> member with a different index, after a call to its <SAMP>copyfmt()</SAMP> member, or when the object is destroyed. If the function fails, it sets <SAMP>failbit</SAMP>, which may throw an exception. On success, the function returns <SAMP>iarray[idx]</SAMP>; otherwise, a valid <SAMP>long&amp;</SAMP> initialized to <SAMP>0</SAMP>.</P>
</UL>
<A NAME="idx682"></A><PRE>streamsize
<B>precision</B>() const; </PRE>
<UL>
<P>Returns the precision (number of digits after the decimal point) to generate on certain output conversions.</P>
</UL>
<A NAME="idx683"></A><PRE>streamsize
<B>precision</B>(streamsize prec); </PRE>
<UL>
<P>Saves the precision, then sets it to <SAMP>prec</SAMP> and returns the previously saved value.</P>
</UL>
<A NAME="idx684"></A><PRE>void*&amp;
<B>pword</B>(int idx); </PRE>
<UL>
<P>If <SAMP>parray</SAMP> is a null pointer, allocates an array of <SAMP>void*</SAMP> of sufficient size, and stores a pointer to its first element in <SAMP>parray</SAMP>. The function then extends the array pointed at by <SAMP>parray</SAMP>, as necessary, to include the element <SAMP>parray[idx]</SAMP>. Each newly allocated element of the array is initialized to <SAMP>0</SAMP>. The reference returned may become invalid after another call to the object's <SAMP>pword</SAMP> member with a different index, after a call to its <SAMP>copyfmt()</SAMP> member, or when the object is destroyed. If the function fails, it sets <SAMP>failbit</SAMP>, which may throw an exception. On success, the function returns <SAMP>parray[idx]</SAMP>; otherwise, a valid <SAMP>void*&amp;</SAMP> initialized to <SAMP>0</SAMP>.</P>
</UL>
<A NAME="idx685"></A><PRE>void
<B>register_callback</B>(event_callback fn, int index); </PRE>
<UL>
<P>Registers the pair <SAMP>(fn, index)</SAMP> such that during calls to <SAMP>imbue()</SAMP>, <SAMP>copyfmt()</SAMP>, or <SAMP>~ios_base()</SAMP>, the function <SAMP>fn</SAMP> is called with argument <SAMP>index</SAMP>. Functions registered are called when an event occurs, in opposite order of registration. Functions registered while a callback function is active are not called until the next event. Identical pairs are not merged; a function registered twice is called twice per event.</P>
</UL>
<A NAME="idx688"></A><PRE>bool
<B>sync_with_stdio</B>(bool sync = true); </PRE>
<UL>
<P>When called with a <SAMP>false</SAMP> argument, allows the C++ standard streams to operate independently of the standard C streams, which greatly improves performance. When called with a <SAMP>true</SAMP> argument, restores the default synchronization. The return value of the function is the status of the synchronization at the time of the call. </P>
</UL>
<A NAME="idx690"></A><PRE>streamsize
<B>width</B>() const; </PRE>
<UL>
<P>Returns the field width (number of characters) to generate on certain output conversions.</P>
</UL>
<A NAME="idx691"></A><PRE>streamsize
<B>width</B>(streamsize wide); </PRE>
<UL>
<P>Saves the field width, sets it to <SAMP>wide</SAMP>, and returns the previously saved value.</P>
</UL>
<A NAME="idx692"></A><PRE>static int
<B>xalloc</B>();</PRE>
<UL>
<P>Returns the next static index that can be used with <SAMP>pword</SAMP> and <SAMP>iword</SAMP>. This is useful if you want to share data between several stream objects.</P>
</UL>
<A NAME="failure"><H3>Class failure</H3></A>
<P>The class <B><I>failure</I></B> defines the base class for the types of all objects thrown as exceptions by functions in the <B><I><A HREF="basic-iostream.html">iostream</A></I></B><B><I>s</I></B> library. It reports errors detected during stream buffer operations.</P>
<P><B>Constructor</B></P>
<A NAME="idx693"></A><PRE>explicit <B>failure</B>(const string&amp; msg); </PRE>
<UL>
<P>Constructs an object of class <SAMP>failure</SAMP>, initializing the base class with <SAMP>exception(msg).</SAMP></P>
</UL>
<P><B>Public Member Function</B></P>
<A NAME="idx694"></A><PRE>const char*
<B>what</B>() const; </PRE>
<UL>
<P>Returns the message <SAMP>msg</SAMP> with which the exception was created.</P>
</UL>
<A NAME="init"><H3>Class Init</H3></A>
<P>The class <B><I>Init</I></B> describes an object whose construction ensures the construction of the eight objects declared in <SAMP>&lt;iostream&gt;</SAMP>, which associates file stream buffers with the standard C streams.</P>
<A NAME="sec12"><H3>Nonmember Functions</H3></A>
<P>The following functions are <B><I>ios_base</I></B> manipulators.</P>
<A NAME="idx695"></A><PRE>
ios_base&amp;
<B>boolalpha</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::boolalpha)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx696"></A><PRE>ios_base&amp;
<B>dec</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::dec, ios_base::basefield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx697"></A><PRE>ios_base&amp;
<B>fixed</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::fixed, ios_base::floatfield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx698"></A><PRE>ios_base&amp;
<B>hex</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::hex, ios_base::basefield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx699"></A><PRE>ios_base&amp;
<B>internal</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::internal, ios_base::adjustfield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx700"></A><PRE>ios_base&amp;
<B>left</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::left, ios_base::adjustfield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx701"></A><PRE>ios_base&amp;
<B>noboolalpha</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::boolalpha)</SAMP> and returns <SAMP>str.</SAMP></P>
</UL>
<A NAME="idx702"></A><PRE>ios_base&amp;
<B>noshowbase</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::showbase)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx703"></A><PRE>ios_base&amp;
<B>noshowpoint</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::showpoint)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx704"></A><PRE>ios_base&amp;
<B>noshowpos</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::showpos)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx705"></A><PRE>ios_base&amp;
<B>noskipws</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::skipws)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx706"></A><PRE>ios_base&amp;
<B>nounitbuf</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::unitbuf)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx707"></A><PRE>ios_base&amp;
<B>nouppercase</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.unsetf(ios_base::uppercase)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx708"></A><PRE>ios_base&amp;
<B>oct</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls<SAMP> str.setf(ios_base::oct, ios_base::basefield)</SAMP> and returns<SAMP> str</SAMP>.</P>
</UL>
<A NAME="idx709"></A><PRE>ios_base&amp;
<B>right</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::right, ios_base::adjustfield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx710"></A><PRE>ios_base&amp;
<B>scientific</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::scientific, ios_base::floatfield)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx711"></A><PRE>ios_base&amp;
<B>showbase</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::showbase)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx712"></A><PRE>ios_base&amp;
<B>showpoint</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::showpoint)</SAMP> and returns s<SAMP>tr</SAMP>.</P>
</UL>
<A NAME="idx713"></A><PRE>ios_base&amp;
<B>showpos</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::showpos)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx714"></A><PRE>ios_base&amp;
<B>skipws</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::skipws)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx715"></A><PRE>ios_base&amp;
<B>unitbuf</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::unitbuf)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="idx716"></A><PRE>ios_base&amp;
<B>uppercase</B>(ios_base&amp; str); </PRE>
<UL>
<P>Calls <SAMP>str.setf(ios_base::uppercase)</SAMP> and returns <SAMP>str</SAMP>.</P>
</UL>
<A NAME="sec13"><H3>See Also</H3></A>
<P><B><I><A HREF="basic-ios.html">basic_ios</A></I></B>, <B><I><A HREF="basic-istream.html">basic_istream</A></I></B>, <B><I><A HREF="basic-ostream.html">basic_ostream</A></I></B>, <B><I><A HREF="char-traits.html">char_traits</A></I></B></P>
<A NAME="sec14"><H3>Standards Conformance</H3></A>
<P><I>ISO/IEC 14882:1998 -- International Standard for Information Systems --Programming Language C++, Section 27.4.2</I></P>
<BR>
<HR>
<A HREF="ios-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="ios-base--failure.html"><IMG SRC="images/bnext.gif" WIDTH=20 HEIGHT=21 ALT="Next file" BORDER=O></A>
<!-- Google Analytics tracking code -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1775151-1";
urchinTracker();
</script>
<!-- end of Google Analytics tracking code -->
</BODY>
</HTML>