<!--
    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>Saves the format control information, then sets it to <SAMP>fmtfl</SAMP> and returns the previously saved value.</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="idx686"></A><PRE>fmtflags 
<B>setf</B>(fmtflags fmtfl); </PRE>
<UL>
<P>Saves the format control information, then sets it to <SAMP>fmtfl</SAMP> and returns the previously saved value.</P>
</UL>


<A NAME="idx687"></A><PRE>fmtflags 
<B>setf</B>(fmtflags fmtfl, fmtflags mask); </PRE>
<UL>
<P>Saves the format control information, then clears <SAMP>mask</SAMP> in <SAMP>flags()</SAMP>, sets <SAMP>fmtfl &amp; mask in flags()</SAMP>, and returns the previously saved value.</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="idx689"></A><PRE>void 
<B>unsetf</B>(fmtflags mask); </PRE>
<UL>
<P>Clears <SAMP>mask</SAMP> in <SAMP>flags()</SAMP>.</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>
