how to set width for printing

Posted on 1998-08-21
Medium Priority
Last Modified: 2010-04-10
If my code looks like this for printing a little report, how do I get the
field width to stay the same ever time I print it out.
eg. when I type in a company field like Microsoft then I type one in like
Cape Breton Regional Municipality, the whole report gets messed up because
of the different lengths. And if there is no company name in the space all
the ouyputs jam together. How can I fix this problem to have a consistent

//////example of some of my variables declared above.
      m_custnum = _T("");
      m_ordernum = _T("");
      m_address = _T("");
      m_assigned = _T("");
      m_billcode = _T("");
      m_company = _T("");
      m_contact = _T("");
      m_contract = _T("");
      m_custponum = _T("");
      m_custref = _T("");

/////code to print out short report

fstream Printer("\\LPT1",ios::out,filebuf::sh_none);

      //output above strings

Printer<<"\rAlliance Computer Sytems / Atlantic Computer Services            SERVICE REPORT\n\r";
Printer<<"\r288 Welton Street   P.O. Box 1856     Phone 902 562-6600\n\r";
Printer<<"\rSydney, Nova Scotia B1P 6W4             Fax 902 562-6723\n\r\r";
Printer<<"\r _______________________________________________________________________________\n\r";
Printer<<"\r| Call Date: "<<m_calldate<<"  |  Status: "<<m_status<<"  |  Waiting for Parts: "<<m_waitparts<< " |  Order #: "<<m_ordernum<<"  |\n\r";      
Printer<<"\r| Customer #"<<m_custnum<<"                   | Customer Refernce #:"<<m_custref<<"|\n\r";
Printer<<"\r| Company: "<<m_company<<"           |      Customer P.O. #:"<<m_custponum<<"|\n\r";
Printer<<"\r| Address: "<<m_address<<"           |      Contract: "<<m_contract<<" |\n\r";
Printer<<"\r|                                              |\n\r";
Printer<<"\r|                                              |\n\r";              


      MessageBox("Your request is being Printed!");

Question by:lance100
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
LVL 22

Accepted Solution

nietod earned 100 total points
ID: 1170885
I provided an answer on your other question, but here is some reference material to get you started.


#include <iostream.h>

As the iostream class hierarchy diagram shows, ios is the base class for all the input/output stream classes. While ios is not technically an abstract base class, you will not usually construct ios objects, nor will you derive classes directly from ios. Instead, you will use the derived classes istream and ostream or other derived classes.

Even though you will not use ios directly, you will be using many of the inherited member functions and data members described here. Remember that these inherited member function descriptions are not duplicated for derived classes.

Data Members (static) — Public Members

basefield   Mask for obtaining the conversion base flags (dec, oct, or hex).

adjustfield   Mask for obtaining the field padding flags (left, right, or internal).

floatfield   Mask for obtaining the numeric format (scientific or fixed).

Construction/Destruction — Public Members

ios   Constructor for use in derived classes.

~ios   Virtual destructor.

Flag and Format Access Functions — Public Members

flags   Sets or reads the stream's format flags.

setf   Manipulates the stream's format flags.

unsetf   Clears the stream's format flags.

fill   Sets or reads the stream's fill character.

precision   Sets or reads the stream's floating-point format display precision.

width   Sets or reads the stream's output field width.

Status-Testing Functions — Public Members

good   Indicates good stream status.

bad   Indicates a serious I/O error.

eof   Indicates end of file.

fail   Indicates a serious I/O error or a possibly recoverable I/O formatting error.

rdstate   Returns the stream's error flags.

clear   Sets or clears the stream's error flags.

User-Defined Format Flags — Public Members

bitalloc   Provides a mask for an unused format bit in the stream's private flags variable (static function).

xalloc   Provides an index to an unused word in an array reserved for special-purpose stream state variables (static function).

iword   Converts the index provided by xalloc to a reference (valid only until the next xalloc).

pword   Converts the index provided by xalloc to a pointer (valid only until the next xalloc).

Other Functions — Public Members

delbuf   Controls the connection of streambuf deletion with ios destruction.

rdbuf   Gets the stream's streambuf object.

sync_with_stdio   Synchronizes the predefined objects cin, cout, cerr, and clog with the standard I/O system.

tie   Ties a specified ostream to this stream.

Operators — Public Members

operator void*   Converts a stream to a pointer that can be used only for error checking.

operator !   Returns a nonzero value if a stream I/O error occurs.

ios Manipulators

dec   Causes the interpretation of subsequent fields in decimal format (the default mode).

hex   Causes the interpretation of subsequent fields in hexadecimal format.

oct   Causes the interpretation of subsequent fields in octal format.

binary   Sets the stream's mode to binary (stream must have an associated filebuf buffer).

text   Sets the stream's mode to text, the default mode (stream must have an associated filebuf buffer).

Parameterized Manipulators

(#include <iomanip.h> required)

setiosflags   Sets the stream's format flags.

resetiosflags   Resets the stream's format flags.

setfill   Sets the stream's fill character.

setprecision   Sets the stream's floating-point display precision.

setw   Sets the stream's field width (for the next field only).

Abstract Stream Base Class

See Also   istream, ostream
LVL 22

Expert Comment

ID: 1170886
note in particular the manipulators listed at the end.  the "ios manipulators" don't take parameters, like

cout << oct << 123;

causes 123 to print in octal.

The "parameterized manipulators"  take parameters, like

cout << setf('*') << setw(20) << 123;

causes 123 to be padded with *'s on the left to a width of 20.

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

649 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question