home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 May / PCFMay2001.iso / Xenon / C++ / FreeCommandLineTools.exe / Examples / StdLib / ifstream.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-31  |  4.4 KB  |  159 lines

  1. #include "stlexam.h"
  2. #pragma hdrstop
  3. /***************************************************************************
  4.  *
  5.  * ifstream.cpp - basic_ifstream example
  6.  *                See Class Reference Section
  7.  *
  8.  ***************************************************************************
  9.  *
  10.  * (c) Copyright 1994, 1998 Rogue Wave Software, Inc.
  11.  * ALL RIGHTS RESERVED
  12.  *
  13.  * The software and information contained herein are proprietary to, and
  14.  * comprise valuable trade secrets of, Rogue Wave Software, Inc., which
  15.  * intends to preserve as trade secrets such software and information.
  16.  * This software is furnished pursuant to a written license agreement and
  17.  * may be used, copied, transmitted, and stored only in accordance with
  18.  * the terms of such license and with the inclusion of the above copyright
  19.  * notice.  This software and information or any other copies thereof may
  20.  * not be provided or otherwise made available to any other person.
  21.  *
  22.  * Notwithstanding any other lease or license that may pertain to, or
  23.  * accompany the delivery of, this computer software and information, the
  24.  * rights of the Government regarding its use, reproduction and disclosure
  25.  * are as set forth in Section 52.227-19 of the FARS Computer
  26.  * Software-Restricted Rights clause.
  27.  * 
  28.  * Use, duplication, or disclosure by the Government is subject to
  29.  * restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
  30.  * Technical Data and Computer Software clause at DFARS 252.227-7013.
  31.  * Contractor/Manufacturer is Rogue Wave Software, Inc.,
  32.  * P.O. Box 2328, Corvallis, Oregon 97339.
  33.  *
  34.  * This computer software and information is distributed with "restricted
  35.  * rights."  Use, duplication or disclosure is subject to restrictions as
  36.  * set forth in NASA FAR SUP 18-52.227-79 (April 1985) "Commercial
  37.  * Computer Software-Restricted Rights (April 1985)."  If the Clause at
  38.  * 18-52.227-74 "Rights in Data General" is specified in the contract,
  39.  * then the "Alternate III" clause applies.
  40.  *
  41.  **************************************************************************/
  42.  
  43. //
  44. // stdlib/examples/manual/ifstream.cpp
  45. //
  46. #include<iostream>
  47. #include<fstream>
  48. #include<iomanip>
  49.  
  50. int main ( )
  51. {
  52. #ifndef _RWSTD_NO_NAMESPACE
  53.   using namespace std;
  54. #endif 
  55.  
  56.   long   l= 20;
  57.   const char   *ntbs="Le minot passait la piece a frotter";
  58.   char   c;
  59.   char   buf[50];
  60.  
  61. #ifndef _RWSTD_NO_EXCEPTIONS
  62.   try {
  63. #endif
  64.  
  65.     // create a read/write file-stream object on char
  66.     // and attach it to an ifstream object
  67.     ifstream in("ifstream.results.out",ios_base::in | ios_base::out |
  68.         ios_base::trunc);
  69.  
  70.     if ( !in.is_open() ) 
  71. #ifndef _RWSTD_NO_EXCEPTIONS
  72.       throw(ios_base::failure("Open error"));
  73. #else
  74.     abort();
  75. #endif
  76.  
  77.     // tie the ostream object to the ifstream object
  78.     ostream out(in.rdbuf());   
  79.  
  80.     // output ntbs in out
  81.     out << ntbs << endl;
  82.  
  83.     // seek to the beginning of the file
  84.     in.seekg(0);
  85.  
  86.     // output each word on a separate line
  87.     while ( in.get(c) )
  88.     {
  89.       if ( ifstream::traits_type::eq(c,' ') ) 
  90.         cout << endl;
  91.       else
  92.         cout << c;
  93.     }
  94.     cout << endl << endl;
  95.  
  96.     // move back to the beginning of the file
  97.     in.seekg(0); 
  98.  
  99.     // clear the state flags
  100.     in.clear();
  101.  
  102.     // does the same thing as the previous code
  103.     // output each word on a separate line
  104.     while ( in >> buf )
  105.       cout << buf << endl; 
  106.     
  107.     cout << endl << endl;
  108.  
  109.     // output the base info before each integer
  110.     out << showbase;
  111.  
  112.     ostream::pos_type pos= out.tellp();
  113.  
  114.     // output l in hex with a field with of 20 
  115.     out << hex << setw(20) << l << endl;
  116.  
  117.     // output l in oct with a field with of 20
  118.     out << oct << setw(20) << l << endl;
  119.  
  120.     // output l in dec with a field with of 20
  121.     out << dec << setw(20) << l << endl;
  122.  
  123.     // move back to the beginning of the file
  124.     in.seekg(0);
  125.  
  126.     // output the all file
  127.     cout << in.rdbuf();
  128.  
  129.     // clear the flags 
  130.     in.clear(); 
  131.  
  132.     // seek the input sequence to pos  
  133.     in.seekg(pos);
  134.   
  135.     int a,b,d;
  136.  
  137.     in.unsetf(ios_base::basefield);
  138.  
  139.     // read the previous outputted integer
  140.     in >> a >> b >> d;
  141.  
  142.     // output 3 times 20
  143.     cout << a << endl << b << endl << d << endl;
  144.  
  145. #ifndef _RWSTD_NO_EXCEPTIONS
  146.   }
  147.   catch( ios_base::failure var )
  148.   {
  149.     cout << var.what();
  150.   }
  151. #endif   
  152.  
  153.   return 0;
  154. }
  155.  
  156.  
  157.  
  158.  
  159.