Push 发表于 2012-3-1 23:39:36

C++程序求详细注视

求详细注视

#include <fstream>
#include <cstdlib>
#include <iostream>
using namespace std;
void print_error( const char*, const char* = "" );
int main( int argc, char* argv[] )
{      
    if( argc != 3 )      
    {            
      print_error( "输入形式: copyFile 源文件名 目标文件名 \n" );      
    }            
    ifstream in( argv, ios::binary );            
    if( !in )      
    {            
      print_error( "不能打开文件: ", argv );      
    }      
    ofstream out( argv, ios::binary );            
    if( !out )      
    {            
      print_error( "不能打开文件: ", argv );      
    }            
    char ch;      
    while( in.get(ch) )      
    {            
      out.put(ch);      
    }            
    if( !in.eof() )      
    {            
      print_error( "一些莫名其妙的问题!" );      
    }      return 0;
}
void print_error( const char* p1, const char* p2)
{      
    cerr << p1 << ' ' << p2 << '\n';      
    exit(1);
}

ccqiji 发表于 2012-3-1 23:39:37

ios为基类
派生了读写文件类
argv命令行参数
最后个判断是废话

冬冬 发表于 2012-3-2 22:11:49

一句话是用来命令行参数,来复制文件
详细注视:01.#include <fstream> //C++文件流类头文件

02.#include <cstdlib>

03.#include <iostream>

04.using namespace std;

05.void print_error( const char*, const char* = "" );

06.int main( int argc, char* argv[] )

07.{      

08.    if( argc != 3 )       //Main函数的第一个参数是参数的个数,如果不是三个就错误

09.    {            

10.      print_error( "输入形式: copyFile 源文件名 目标文件名 \n" );      

11.    }            

12.    ifstream in( argv, ios::binary );          //argv是一个参数数组,第二个就是源文件   

13.    if( !in )      

14.    {            

15.      print_error( "不能打开文件: ", argv );      

16.    }      

17.    ofstream out( argv, ios::binary );            

18.    if( !out )      

19.    {            

20.      print_error( "不能打开文件: ", argv );      

21.    }            

22.    char ch;      

23.    while( in.get(ch) )      

24.    {            

25.      out.put(ch);      

26.    }            

27.    if( !in.eof() )      

28.    {            

29.      print_error( "一些莫名其妙的问题!" );      

30.    }      return 0;

31.}

32.void print_error( const char* p1, const char* p2)

33.{      

34.    cerr << p1 << ' ' << p2 << '\n';      

35.    exit(1);

36.}

仰望天上的光 发表于 2012-3-3 18:50:18

如果略去错误检查,下面这个写法应该更简洁些#include <fstream>
#include <cstdlib>
#include <iostream>
using namespace std;

int main( int argc, char* argv[] ){
        ofstream( argv, ios::binary )<<ifstream( argv, ios::binary ).rdbuf();
}

2002wmj 发表于 2014-9-8 23:16:09

很不错呀,多谢分享!
页: [1]
查看完整版本: C++程序求详细注视