直接附上代碼吧
#include<iostream> #include<fstream> #include<cstdlib> using namespace std; void write_into_file(){ cout<<"請輸入合成后生成的文件名:"<<endl; string Des_FileName; cin>>Des_FileName; cout<<endl; cout<<"請輸入想要合並原始文件個數:"<<endl; int cnt; cin>>cnt; cout<<endl; string Source_Array_FileName[cnt];//保存將要合並的各文件 for(int i=0;i!=cnt;++i){ cout<<"請輸入第"<<i+1<<"個原始文件:"<<endl; cin>>Source_Array_FileName[i]; cout<<endl; } cout<<"請稍后,馬上開始合並!"<<endl<<endl; ofstream outfile(Des_FileName,ios::out);//定義輸出文件流對象,並賦初值,指定模式 ifstream infile;//定義一個輸入文件流對象 char c;//用來暫存從文件獨處的一個字符 for(string Temp_FileName : Source_Array_FileName){ infile.open(Temp_FileName,ios::in); if(!infile){ cerr<<"打開文件 "<<Temp_FileName<<" 失敗"<<endl; } while(infile.get(c)){ outfile<<c; }
infile<<endl; infile.close(); cout<<Temp_FileName<<"已經合並到目標文件"<<endl; } outfile.close(); cout<<"所有文件合並已完成"<<endl; } int main(){ write_into_file(); system("pause"); return 0; }
總的來說,思路特別簡單,打開一個文件,就將此文件的內容存入到目標文件中,然后執行下一個文件操作,不過吧,還是有需要注意的
在將一個源文件的內容已經轉存入目標文件后,在打開另外一個源文件之前,必須先將當前的輸入文件流關聯的源文件關閉,即用infile.close(),不然就不能打開下一個文件
再附上一個測試結果吧