File Stream C++ Tutorial

#include 
#include                                                      
#include 
using namespace std;                                                   
void print_error(const char*, const char* = " ");                      
int main(int argc, char* argv[])                                       
{
     if (3 != argc)
         print_error("usage: copy source dest");
     ifstream in( argv[1], ios::binary );                              
     if (!in)
          print_error( "can't open", argv[1] );
     ofstream out( argv[2], ios::binary );                             
     if (!out)
          print_error( "can't open", argv[2] );
     char ch;                                                          
     while ( in.get(ch) )                                              
          out.put( ch );                                               
     if ( !in.eof() )                                                  
          print_error("something strange happened");
     return 0;
}
void print_error(const char* p, const char* p2) {                      
     cerr << p << ' ' << p2 << '\n';                                   
     exit(1);                                                          
}