blob: 41c9616758823d246773483c54d7ee0a939cd454 [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>Format Control Using the Stream's Format State</TITLE>
<LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="28-2.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="28-4.html"><IMG SRC="images/bnext.gif" WIDTH=25 HEIGHT=21 ALT="Next file" BORDER=O></A><DIV CLASS="DOCUMENTNAME"><B>Apache C++ Standard Library User's Guide</B></DIV>
<H2>28.3 Format Control Using the Stream's Format State</H2>
<A NAME="idx700"><!></A>
<A NAME="idx701"><!></A>
<A NAME="2831"><H3>28.3.1 Format Parameters</H3></A>
<A NAME="idx702"><!></A>
<P>Associated with each stream are a number of <I>format state variables </I>that control the details of formatting and parsing. Format state variables are classes inherited from a stream's base class, either <B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B> or the class template <B><I><A HREF="../stdlibref/basic-ios.html">basic_ios</A></I></B>. There are two kinds of format parameters: those that can have an arbitrary value, and those that can have only a few different values.</P>
<A NAME="2831-1"><H4>28.3.1.1 Parameters That Can Have an Arbitrary Value</H4></A>
<A NAME="idx703"><!></A>
<P>The value is stored as a private data member in one of the base classes, and set and retrieved through public member functions inherited from that base class. There are three such parameters, described in <A HREF="28-3.html#Table&nbsp;27">Table&nbsp;27</A>:</P>
<A NAME="idx704"><!></A>
<H4><A NAME="Table&nbsp;27">Table&nbsp;27: Format parameters with arbitrary values</A></H4>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="3">
<tr><td valign=top><B><B>Access function</B></B>
</td><td valign=top><B><B>Defined in </B></B>
<B><B>base class</B></B>
</td><td valign=top><B><B>Effect</B></B>
</td><td valign=top><B><B>Default</B></B>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>width()</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B></P>
</td><td valign=top><P CLASS="TABLE">Minimal field width</P>
</td><td valign=top><P CLASS="TABLE">0</P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>precision()</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B></P>
</td><td valign=top><P CLASS="TABLE">Precision of floating point values</P>
</td><td valign=top><P CLASS="TABLE">6</P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>fill()</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><B><I><A HREF="../stdlibref/basic-ios.html">basic_ios</A></I></B></P>
</td><td valign=top><P CLASS="TABLE">Fill character for padding</P>
</td><td valign=top><P CLASS="TABLE">The space character</P>
</td></tr>
</TABLE>
<A NAME="2831-2"><H4>28.3.1.2 Parameters That Can Have Only a Few Different Values</H4></A>
<A NAME="idx705"><!></A>
<P>Typically, these would have just two or three different values. These parameters are represented by one or more bits in a data member of type <SAMP>std::iosbase::fmtflags</SAMP> in class <B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B>. These are usually called <I>format flags</I>. You can set format flags using the <SAMP>setf()</SAMP> function in class <B><I>ios_base</I></B>, clear them using <SAMP>unsetf()</SAMP>, and retrieve them through the <SAMP>flags()</SAMP> function.</P>
<A NAME="idx706"><!></A>
<P>Some format flags are grouped because they are mutually exclusive; for example, output within an output field can be adjusted to the left or to the right, or to an internally specified adjustment. One and only one of the corresponding three format flags, <SAMP>left</SAMP>, <SAMP>right</SAMP>, or <SAMP>internal</SAMP>, can be set. (Iostreams does not prevent you from setting other invalid combinations of these flags, however.) If you want to set one of these bits to <SAMP>1</SAMP>, you need to set the other two to <SAMP>0</SAMP>. To make this easier, there are <I>bit groups</I> whose main function is to reset all bits in one group. The bit group for adjustment is <SAMP>adjustfield</SAMP>, defined as <SAMP>left | right | internal</SAMP>. </P>
<P><A HREF="28-3.html#Table&nbsp;28">Table&nbsp;28</A> gives an overview of all format flags and their effects on input and output operators. (For details on how the format flags affect input and output operations, see the <I>Apache C++ Standard Library Reference Guide</I> entry for <B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B>.) The first column below<I>, format flag</I>, lists the flag names; for example, <SAMP>showpos</SAMP> stands for <SAMP>std::ios_base::showpos</SAMP>. The<I> group</I> column lists the name of the group for flags that are mutually exclusive. The third column gives a brief description of the effect of setting the flag. The <I>stdio</I> column refers to format characters used by the C functions <SAMP>scanf()</SAMP> or <SAMP>printf()</SAMP> that have the same or similar effect. The last column, <I>default</I>, lists the setting that is used if you do not explicitly set the flag.</P>
<A NAME="idx707"><!></A>
<H4><A NAME="Table&nbsp;28">Table&nbsp;28: Flags and their effects on operators&nbsp;</A></H4>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="3">
<tr><td valign=top><B><B>Format flag</B></B>
</td><td valign=top><B><B>Group</B></B>
</td><td valign=top><B><B>Effect</B></B>
</td><td valign=top><B><B>stdio </B></B>
</td><td valign=top><B>Default</B>
</td></tr>
<tr><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE"><SAMP>adjustfield</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Adds fill characters to certain generated output for adjustment:</P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE"><SAMP>left</SAMP></P>
<P CLASS="TABLE">(no bits set)</P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>left</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">left</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>-</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>right</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">right</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>internal</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">Adds fill characters at designated internal point</P>
</td><td valign=top><P CLASS="TABLE">none</P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE"><SAMP>basefield</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Converts integer input or generates integer output in:</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%i</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>dec</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>dec</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">decimal base</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%d,%u</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>oct</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">octal base</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%o,%O</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>hex</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">hexadecimal base</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%x,%X</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE"><SAMP>floatfield</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Generates floating point output:</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%g,%G</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>fixed</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>fixed</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">in fixed-point notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%f</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>scientific</SAMP></P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE">in scientific notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%e,%E</SAMP></P>
</td><td valign=top>&nbsp;
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>boolalpha</SAMP></P>
</td><td valign=top colspan=1 rowspan=7>&nbsp;
</td><td valign=top><P CLASS="TABLE">Inserts and extracts <SAMP>bool</SAMP> values in alphabetic format</P>
</td><td valign=top>&nbsp;
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showpos</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Generates a <SAMP>+</SAMP> sign in non-negative generated numeric output</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>+</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showpoint</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Always generates a decimal-point in generated floating-point output</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>.n</SAMP></P>
<P CLASS="TABLE">(n indicates number of decimals)</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showbase</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Generates a prefix indicating the numeric base of a generated integer output</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>#</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>skipws</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Skips leading white space before certain input operations</P>
</td><td valign=top><P CLASS="TABLE">none</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>1</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>unitbuf</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Flushes output after each formatting operation</P>
</td><td valign=top><P CLASS="TABLE">none</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>uppercase</SAMP> </P>
</td><td valign=top><P CLASS="TABLE">Replaces certain lowercase letters with their uppercase equivalents in generated output</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>%X</SAMP></P>
<P CLASS="TABLE"><SAMP>%E</SAMP></P>
<P CLASS="TABLE"><SAMP>%G</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>0</SAMP></P>
</td></tr>
</TABLE>
<A NAME="idx708"><!></A>
<P>The effect of setting a format parameter is usually permanent; that is, the parameter setting is in effect until the setting is explicitly changed. The only exception to this rule is the field width. The width is automatically reset to its default value, <SAMP>0</SAMP>, after each input or output operation that uses the field width. Here is an example:</P>
<UL><PRE>
int i; char* s[11];
std::cin &gt;&gt; setw(10) &gt;&gt; i &gt;&gt; s; //1
std::cout &lt;&lt; setw(10) &lt;&lt; i &lt;&lt; s; //2
</PRE></UL>
<TABLE CELLPADDING="3">
<TR VALIGN="top"><TD><SAMP>//1</SAMP></TD><TD>Extracting an integer is independent of the specified field width. The extractor for integers always reads as many digits as belong to the integer. As extraction of integers does not use the field width setting, the field width of <SAMP>10</SAMP> is still in effect when a character sequence is subsequently extracted. At most 10 characters are extracted in this case. After the extraction, the field width is reset to <SAMP>0</SAMP>.
<TR VALIGN="top"><TD><SAMP>//2</SAMP></TD><TD>The inserter for integers uses the specified field width and fills the field with padding characters if necessary. After the insertion, it resets the field width to <SAMP>0</SAMP>. Hence, the subsequent insertion of the string does not fill the field with padding characters for a string with less than 10 characters.
</TABLE>
<BLOCKQUOTE><HR><B>
NOTE -- With the exception of the field width, all format parameter settings are permanent. The field width parameter is reset after each use.
</B><HR></BLOCKQUOTE>
<A NAME="idx709"><!></A>
<P>The following code sample shows how you can control formatting by using some of the parameters:</P>
<UL><PRE>
#include &lt;iostream&gt;
// ...
std::ios_base::fmtflags original_flags = std::cout.flags(); //1
std::cout&lt;&lt; 812&lt;&lt;'|';
std::cout.setf(std::ios_base::left,
std::ios_base::adjustfield); //2
std::cout.width(10); //3
std::cout &lt;&lt; 813 &lt;&lt; 815 &lt;&lt; '\n';
std::cout.unsetf(ios_base::adjustfield); //4
std::cout.precision(2);
std::cout.setf(std::ios_base::uppercase |
std::ios_base::scientific); //5
std::cout &lt;&lt; 831.0 &lt;&lt; ` ` &lt;&lt; 8e2;
std::cout.flags(original_flags); //6
</PRE></UL>
<TABLE CELLPADDING="3">
<TR VALIGN="top"><TD><SAMP>//1</SAMP></TD><TD>Store the current format flag setting, in order to restore it later on.
<TR VALIGN="top"><TD><SAMP>//2</SAMP></TD><TD>Change the adjustment from the default setting <SAMP>right</SAMP> to <SAMP>left</SAMP>.
<TR VALIGN="top"><TD><SAMP>//3</SAMP></TD><TD>Set the field width from its default <SAMP>0</SAMP> to <SAMP>10</SAMP>. A field width of <SAMP>0</SAMP> means that no padding characters are inserted, and this is the default behavior of all insertions.
<TR VALIGN="top"><TD><SAMP>//4</SAMP></TD><TD>Clear the adjustment flags.
<TR VALIGN="top"><TD><SAMP>//5</SAMP></TD><TD>Change the precision for floating-point values from its default <SAMP>6</SAMP> to <SAMP>2</SAMP>, and set yet another couple of format flags that affect floating-point values.
<TR VALIGN="top"><TD><SAMP>//6</SAMP></TD><TD>Restore the original flags.
</TABLE>
<P>The output is:</P>
<UL><PRE>
812|813 815
8.31E+02 8.00E+02
</PRE></UL>
<A NAME="idx710"><!></A>
<A NAME="2832"><H3>28.3.2 Manipulators</H3></A>
<A NAME="idx711"><!></A>
<P>Format control requires calling a stream's member functions. Each such call interrupts the respective shift expression. But what if you need to change formats within a shift expression? This is possible in iostreams. In the preceding example, instead of writing:</P>
<UL><PRE>
std::cout &lt;&lt; 812 &lt;&lt; '|';
std::cout.setf(std::ios_base::left, std::ios_base::adjustfield);
std::cout.width(10);
std::cout &lt;&lt; 813 &lt;&lt; 815 &lt;&lt; '\n';
</PRE></UL>
<P>you can write:</P>
<UL><PRE>
std::cout &lt;&lt; 812 &lt;&lt; '|' &lt;&lt; std::left &lt;&lt; std::setw(10) &lt;&lt; 813 &lt;&lt; 815
&lt;&lt; std::endl;
</PRE></UL>
<A NAME="idx712"><!></A>
<P>In this example, objects like <SAMP>left</SAMP>, <SAMP>setw</SAMP>, and <SAMP>endl</SAMP> are called <I>manipulators</I>. There are overloaded versions of the insertion and extraction operators for manipulators, so that manipulators can be extracted from or inserted into a stream together with other objects that have the shift operators defined. (<A HREF="28-3.html#2832">Section&nbsp;28.3.2</A> explains in greater detail how manipulators work and how you can implement your own manipulators.)</P>
<A NAME="idx713"><!></A>
<P>The effect of a manipulator need not be an actual input to or output from the stream. Most manipulators set just one of the above described format flags, or do some other kind of stream manipulation. For example, an expression like:</P>
<UL><PRE>
std::cout &lt;&lt; std::left;
</PRE></UL>
<P>is equivalent to: </P>
<UL><PRE>
std::cout.setf (std::ios_base::left, std::ios_base::adjustfield);
</PRE></UL>
<P>Nothing is inserted into the stream. The only effect is that the format flag for adjusting the output to the left is set.</P>
<A NAME="idx714"><!></A>
<P>On the other hand, the manipulator <SAMP>std::endl</SAMP> inserts the newline character to the stream, and flushes to the underlying stream buffer. The expression:</P>
<UL><PRE>
std::cout &lt;&lt; std::endl;
</PRE></UL>
<P>is equivalent to: </P>
<UL><PRE>
(std::cout &lt;&lt; '\n').flush();
</PRE></UL>
<A NAME="idx715"><!></A>
<P>Some manipulators take arguments, like <SAMP>std::setw(int)</SAMP>. The<SAMP> setw </SAMP>manipulator sets the field width. The expression:</P>
<UL><PRE>
std::cout &lt;&lt; std::setw(10);
</PRE></UL>
<P>is equivalent to: </P>
<UL><PRE>
std::cout.width(10);
</PRE></UL>
<P>In general, you can think of a manipulator as an object you can insert into or extract from a stream, in order to manipulate that stream. Some manipulators can be applied only to output streams, others only to input streams. Most manipulators change format bits only in one of the stream base classes, <B><I><A HREF="../stdlibref/ios-base.html">ios_base</A></I></B> or <B><I><A HREF="../stdlibref/basic-ios.html">basic_ios</A></I></B>. These can be applied to input and output streams.</P>
<P><A HREF="28-3.html#Table&nbsp;29">Table&nbsp;29</A> gives an overview of all manipulators defined by iostreams. The first column, <B>Manipulator</B>, lists its name. All manipulators are defined in the namespace <SAMP>::std</SAMP>. The second column, <B>Use</B>, indicates whether the manipulator is intended to be used with istreams (<SAMP>i</SAMP>), ostreams (<SAMP>o</SAMP>), or both (<SAMP>io</SAMP>). The third column, <B>Effect</B>, summarizes the effect of the manipulator. The last column, <B>Equivalent</B>, lists the corresponding call to the stream's member function.</P>
<A NAME="idx716"><!></A>
<P>Note that the second column indicates only the <I>intended</I> use of a manipulator. In many cases, it is possible to apply an output manipulator to an input stream, and vice versa. Generally, this kind of non-intended manipulation is harmless in that it has no effect. For instance, if you apply the output manipulator <SAMP>showpoint</SAMP> to an input stream, the manipulation is simply ignored. However, if you use an output manipulator on a bidirectional stream during input, the manipulation does not affect current input operations, but subsequent output operations.</P>
<A NAME="idx717"><!></A>
<H4><A NAME="Table&nbsp;29">Table&nbsp;29: Manipulators&nbsp;</A></H4>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="3">
<tr><td valign=top><B><B>Manipulator</B></B>
</td><td valign=top><B><B>Use</B></B>
</td><td valign=top><B><B>Effect</B></B>
</td><td valign=top><B><B>Equivalent</B></B>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>boolalpha</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Puts <SAMP>bool</SAMP> values in alphabetic format</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf(ios_base::boolalpha)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>dec</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Converts integers to/from decimal notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf(ios_base::dec,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::basefield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>endl</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Inserts newline and flushes buffer</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.put(o.widen('\n'));</SAMP></P>
<P CLASS="TABLE"><SAMP> o.flush()</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>ends</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Inserts end of string character</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.put(o.widen('\0'))</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>fixed</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Puts floating point values in fixed-point notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::fixed,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::floatfield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>flush</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Flushes stream buffer</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.flush()</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>hex</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Converts integers to/from hexadecimal notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf(ios_base::hex,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::basefield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>internal</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Adds fill characters at a designated internal point</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::internal,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::adjustfield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>left</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Adds fill characters for adjustment to the left</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::left,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::adjustfield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>noboolalpha</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.unsetf(ios_base::boolalpha)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>noshowbase</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.unsetf (ios_base::showbase)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>noshowpoint</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.unsetf (ios_base::showpoint)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>noshowpos</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.unsetf (ios_base::showpos)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>noskipws</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i.unsetf(ios_base::skipws)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>nounitbuf</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.unsetf(ios_base::unitbuf)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>nouppercase</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Resets the above</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.unsetf (ios_base::uppercase)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>oct</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Converts to/from octal notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf(ios_base::oct,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::basefield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>resetiosflags</SAMP></P>
<P CLASS="TABLE"><SAMP> (ios_base::fmt</SAMP></P>
<P CLASS="TABLE"><SAMP> flags mask)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Clears <B><I><A HREF="../stdlibref/basic-ios.html">ios</A></I></B> flags</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf((ios_base::fmtflags)</SAMP></P>
<P CLASS="TABLE"><SAMP> 0, mask)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>right</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Adds fill characters for adjustment to the right</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::right,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::adjustfield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>scientific</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Puts floating point values in scientific notation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::scientific,</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::floatfield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>setbase</SAMP></P>
<P CLASS="TABLE"><SAMP> (int base)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Sets base for integer notation (base = 8, 10, 16)</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf (base ==</SAMP></P>
<P CLASS="TABLE"><SAMP> 8?ios_base::oct: base == 10 </SAMP></P>
<P CLASS="TABLE"><SAMP>? ios_base::dec : base == 16 </SAMP></P>
<P CLASS="TABLE"><SAMP>? ios_base::hex :</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::fmtflags(0),</SAMP></P>
<P CLASS="TABLE"><SAMP> ios_base::basefield)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>setfill</SAMP></P>
<P CLASS="TABLE"><SAMP> (char_type c)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Sets fill character for padding</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.fill(c)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>setiosflags</SAMP></P>
<P CLASS="TABLE"><SAMP> (ios_base::fmt</SAMP></P>
<P CLASS="TABLE"><SAMP> flags mask)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Sets <B><I><A HREF="../stdlibref/basic-ios.html">ios</A></I></B> flags</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.setf(mask)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>setprecision</SAMP></P>
<P CLASS="TABLE"><SAMP> (int n)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Sets precision of floating point values</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.precision(n)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>setw(int n)</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Sets minimal field width</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>io.width(n)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showbase</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Generates a prefix indicating the numeric base of an integer</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::showbase)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showpoint</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Always generates a decimal-point for floating-point values</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::showpoint)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>showpos</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Generates a <SAMP>+</SAMP> sign for non-negative numeric values</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::showpos)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>skipws</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Skips leading white space </P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i.setf(ios_base::skipws)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>unitbuf</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Flushes output after each formatting operation</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::unitbuf)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>uppercase</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Replaces certain lowercase letters with their uppercase equivalents</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>o.setf(ios_base::uppercase)</SAMP></P>
</td></tr>
<tr><td valign=top><P CLASS="TABLE"><SAMP>ws</SAMP></P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i</SAMP></P>
</td><td valign=top><P CLASS="TABLE">Skips white spaces</P>
</td><td valign=top><P CLASS="TABLE"><SAMP>i.ws()</SAMP></P>
</td></tr>
</TABLE>
<BR>
<HR>
<A HREF="28-2.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="28-4.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>