有关 cout.setfill的错误

    技术2024-08-02  65

       Standard C++ Library                   Copyright 1998, Rogue Wave Software, Inc.NAME      cout       - Controls output to a stream buffer associated with the object      stdout declared in <cstdio>.SYNOPSIS      #include <iostream>      extern ostream cout;      ostream cout;DESCRIPTION      The object cout controls output to a stream buffer associated with the      object stdout declared in <cstdio>. By default the standard C and C++      streams are synchronized, but performance improvement can be achieved      by using the ios_base member function synch_with_stdio to      desynchronize them.      After the object cin is initialized, cin.tie() returns &cout, which      implies that cin and cout are synchronized.FORMATTING      The formatting is done through member functions or manipulators.      MANIPULATORS  MEMBER FUNCTIONS      showpos       setf(ios_base::showpos)      noshowpos       unsetf(ios_base::showpos)      showbase       setf(ios_base::showbase)                                    - 1 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      noshowbase       unsetf(ios_base::showbase)      uppercase       setf(ios_base::uppercase)      nouppercase       unsetf(ios_base::uppercase)      showpoint       setf(ios_base::showpoint)      noshowpoint       unsetf(ios_base::showpoint)      boolalpha       setf(ios_base::boolalpha)      noboolalpha       unsetf(ios_base::boolalpha)      unitbuf       setf(ios_base::unitbuf)      nounitbuf       unsetf(ios_base::unitbuf)      internal       setf(ios_base::internal,                       ios_base::adjustfield)      left       setf(ios_base::left,                   ios_base::adjustfield)      right       setf(ios_base::right,                    ios_base::adjustfield)                                    - 2 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      dec       setf(ios_base::dec,                  ios_base::basefield)      hex       setf(ios_base::hex,                  ios_base::basefield)      oct       setf(ios_base::oct,                  ios_base::basefield)      fixed       setf(ios_base::fixed,                    ios_base::floatfield)      scientific       setf(ios_base::scientific,                         ios_base::floatfield)      resetiosflags        (ios_base::fmtflags flag)       setf(0,flag)      setiosflags        (ios_base::fmtflags flag)       setf(flag)      setbase(int base)       see above      setfill(char_type c)       fill(c)      setprecision(int n)       precision(n)      setw(int n)       width(n)                                    - 3 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      endl      ends      flush       flush( )DESCRIPTION      showpos   Generates a + sign in non-negative generated numeric output.      showbase   Generates a prefix indicating the numeric base of generated                 integer output      uppercase   Replaces certain lowercase letters with their uppercase                  equivalents in generated output      showpoint   Generates a decimal-point character unconditionally in                  generated floating-point output      boolalpha   Inserts and extracts bool type in alphabetic format      unitbuf   Flushes output after each output operation      internal   Adds fill characters at a designated internal point in                 certain generated output. If no such point is designated,                 it's identical to right.      left   Adds fill characters on the right (final positions) of certain             generated output      right   Adds fill characters on the left (initial positions) of              certain generated output                                    - 4 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      dec   Converts integer input or generates integer output in decimal            base      hex   Converts integer input or generates integer output in            hexadecimal base      oct   Converts integer input or generates integer output in octal base      fixed   Generates floating-point output in fixed-point notation      scientific   Generates floating-point output in scientific notation      resetiosflags      (ios_base::fmtflags flag)     Resets the fmtflags field flag      setiosflags      (ios_base::fmtflags flag)     Sets up the flag flag      setbase(int base)   Converts integer input or generates integer output                          in base base. The parameter base can be 8, 10 or                          16.      setfill(char_type c)   Sets the character used to pad (fill) an output                             conversion to the specified field width      setprecision(int n)   Sets the precision (number of digits after the                            decimal point) to generate on certain output                            conversions                                    - 5 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      setw(int n)   Sets the field with (number of characters) to generate                    on certain output conversions      showpos   Generates a + sign in non-negative generated numeric output.      showbase   Generates a prefix indicating the numeric base of generated                 integer output      uppercase   Replaces certain lowercase letters with their uppercase                  equivalents in generated output      showpoint   Generates a decimal-point character unconditionally in                  generated floating-point output      boolalpha   Inserts and extracts bool type in alphabetic format      unitbuf   Flushes output after each output operation      internal   Adds fill characters at a designated internal point in                 certain generated output. If no such point is designated,                 it's identical to right.      left   Adds fill characters on the right (final positions) of certain             generated output      right   Adds fill characters on the left (initial positions) of              certain generated output                                    - 6 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      dec   Converts integer input or generates integer output in decimal            base      hex   Converts integer input or generates integer output in            hexadecimal base      oct   Converts integer input or generates integer output in octal base      fixed   Generates floating-point output in fixed-point notation      scientific   Generates floating-point output in scientific notation      resetiosflags      (ios_base::fmtflags flag)     Resets the fmtflags field flag      setiosflags      (ios_base::fmtflags flag)     Sets up the flag flag      setbase(int base)   Converts integer input or generates integer output                           in base base. The parameter base can be 8, 10 or                           16.      setfill(char_type c)   Sets the character used to pad (fill) an output                             conversion to the specified field width      setprecision(int n)   Sets the precision (number of digits after the                            decimal point) to generate on certain output                            conversions                                    - 7 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998      setw(int n)   Sets the field with (number of characters) to generate                    on certain output conversions      endl   Inserts a newline character into the output sequence and flush             the output buffer.      ends   Inserts a null character into the output sequence.      flush   Flush the output buffer.DEFAULT VALUES      precision()            6      width()                0      fill()                 the space character      flags()                skipws | dec      getloc()               locale::locale()EXAMPLE      //      // cout example #1      //      #include<iostream>      #include<iomanip>      void main ( )      {       using namespace std;       int i;       float f;        // read an integer and a float from stdin       cin >> i >> f;        // output the integer and goes at the line       cout << i << endl;        // output the float and goes at the line                                    - 8 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998       cout << f << endl;        // output i in hexa       cout << hex << i << endl;        // output i in octal and then in decimal       cout << oct << i << dec << i << endl;        // output i preceded by its sign       cout << showpos << i << endl;        // output i in hexa       cout << setbase(16) << i << endl;        // output i in dec and pad to the left with character        // @ until a width of 20        // if you input 45 it outputs 45@@@@@@@@@@@@@@@@@@       cout << setfill('@') << setw(20) << left << dec << i;       cout << endl;        // output the same result as the code just above        // but uses member functions rather than manipulators       cout.fill('@');       cout.width(20);       cout.setf(ios_base::left, ios_base::adjustfield);       cout.setf(ios_base::dec, ios_base::basefield);       cout << i << endl;        // outputs f in scientific notation with        // a precision of 10 digits       cout << scientific << setprecision(10) << f << endl;        // change the precision to 6 digits        // equivalents to cout << setprecision(6);       cout.precision(6);        // output f and goes back to fixed notation       cout << f << fixed << endl;      }      //      // cout example #2      //      #include <iostream>      void main ( )      {       using namespace std;                                    - 9 -          Formatted:  June 20, 2006cout(3C++)                  Rogue Wave Software                  cout(3C++)-                                                                         -                                 02 Apr 1998       char p[50];       cin.getline(p,50);       cout << p;      }      //      // cout example #3      //      #include <iostream>      #include <fstream>      void main ( )      {       using namespace std;        // open the file "file_name.txt"        // for reading       ifstream in("file_name.txt");        // output the all file to stdout       if ( in )         cout << in.rdbuf();       else          {           cout << "Error while opening the file";           cout << endl;          }      }WARNINGS      Keep in mind that the manipulator endl flushes the stream buffer.      Therefore it is recommended to use `/n' if your only intent is to go      at the line. It greatly improves performance when C and C++ streams      are not synchronized.      If your compiler does not support namespaces, then you do not need the      using declaration for std.SEE ALSO      basic_ostream(3C++), basic_iostream(3C++), basic_filebuf(3C++),      cin(3C++), cerr(3C++), clog(3C++), wcin(3C++), wcout(3C++),      wcerr(3C++), wclog(3C++), iomanip(3C++)

    //===========================================================================

     

     

    void print(Date s){

      cout.setfill('0');

      cout<<setw(4)<<s.year<<'-'<<setw(2)<<s.month<<'-'<<setw(2)<<s.day<<'/n';

      cout.setfill('');

    }

     

    //==============================================================================

    上面的代码会报错。应该将cout.setfill改为cout<<setfill

     

    注意:cout<<setfill('c')        引号间 必须有字符

    最新回复(0)