//注意:本程序只能用于.txt 文件,且文件末尾需添加换行符作为标记
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
string filename;
cout << "请输入想要读取得文件地址:";
cin >> filename; //输入地址
//1.说明文件流对象 2.打开文件 3.对文件进行读写操作 4.关闭文件
fstream bootfile, goalfile;
//ifstream 是文件流对象类型。如果仅进行输出则使用ofstream,仅输入则使用ifstream,即输入又输出使用fstream
bootfile.open(filename,ios::in);//bootfile 说明一个对象流文件file
//filename 是文件路径 应为string类型
// ios::in 以读取的保护方式打开文件
while(!bootfile) { //打开文件失败,重新输入路径进行打开
cout << "不能打开文件:" <<endl<<"请重新输入文件地址:" << endl;
bootfile.clear();
cin >> filename;
bootfile.open(filename, ios::in);
} //同动态分配内存一样,打开文件也需判断是否成功打开文件
cout << "请输入目标文件路径名:";
cin >> filename;
goalfile.open(filename, ios::out); //打开目标文件,准备进行写操作
if (!goalfile) {
cout << "目标文件创建失败!" << endl;
return -1;
}
//源文件和目标文件都以打开,开始进行复制工作
char buf[100];
while (bootfile.getline(buf, 100), bootfile.eof() != 1) { //bootfile.getline(buf,100)是把boot中的第一行复制到buf数组中
//eof 是end of line的缩写,
if (bootfile.rdstate() == 0) goalfile << buf << '\n'; //如果读状态为0,则把buf中的内容流至goalfile中,且在末尾加上换行符
else { goalfile << buf; bootfile.clear(0); } //如果读状态不为0,则buf中内容流至goalfile中,且bootfile对象状态清0;
}
bootfile.close();
goalfile.close();
return 0;
}
C++实现文件的复制操作
于 2023-03-13 18:05:46 首次发布