文件复制(P317)

/*

用成员函数put()和get()读写文件:
可以用类ifstream和类fstream的成员函数get()从文件中一次读取一个字节,也可以用类ofstream和类fstream的成员函数put()向文件中一次写入一个字节。
常用于读写字符或文本文件。

函数get()有3种主要形式:

1、int get();
从指定的输入流中提取一个字符(包含空白字符),函数的返回值即为该字符。当遇到文件结束符,返回系统常量EOF。

2、istream &get(char &ch)
从指定输入流中提取一个字符(包含空白字符),将该字符作为rch引用的对象。当遇到文件结束符时,函数返回0;否则返回对istream对象的引用。

3、istream & get(char *pch,int nCount,char delim='\n');
从流的当前字符开始,读取nCount-1个字符,或遇到指定的分隔符delim结束。函数把读取的字符(不包含分隔符)写入数组pch中,并在字符串后添加结束符’\0‘。
语法格式:
ostream & put(char ch);
功能是向输出流插入一个字节。

函数put()的语法格式如下:
ostream & put(char ch);
功能是向输出流中插入一个字节。

*/

#include<iostream>
#include<fstream>
using namespace std;

int main(int argc,char *argv[])
{
if(argc != 3) //判断main的参数是否为3个
{
cout<<"使用方法错误。正确的命令格式:mycopy SourceFile NewFile"<<endl;
return 0;
}
ifstream inFile(argv[1],ios::binary|ios::in); //以二进制读模式打开文件
if(!inFile)
{
cout<<"Source file open error."<<endl;
return 0;
}
ofstream outFile(agrv[2],ios::binary|ios::out); //以二进制写模式打开文件
if(!outFile)
{
cout<<"New file open error."<<endl;
inFile.close();
return 0;
}
char c;
while(inFile.get(c)) //每次读取一个字符,文件结束时退出循环
outFile.put(c); //每次写入一个字符
outFile.close();
inFile.close();
return 0;
}

posted @ 2020-04-14 09:18  CollisionDimension  阅读(110)  评论(0)    收藏  举报