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);
}
ios为基类
派生了读写文件类
argv命令行参数
最后个判断是废话
一句话是用来命令行参数,来复制文件
详细注视: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.}
如果略去错误检查,下面这个写法应该更简洁些#include <fstream>
#include <cstdlib>
#include <iostream>
using namespace std;
int main( int argc, char* argv[] ){
ofstream( argv, ios::binary )<<ifstream( argv, ios::binary ).rdbuf();
} 很不错呀,多谢分享!
页:
[1]