how to set width for printing

Posted on 1998-08-21
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
  • 2
LVL 22

Accepted Solution

nietod earned 50 total points
Comment Utility
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

Comment Utility
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

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
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.

763 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now