はじめに
この実験では、C++ 言語を使ったファイル操作を用いて、1 つのファイルの内容を別のファイルにコピーする方法を学びます。
ヘッダーファイルと名前空間を含める
最初のステップでは、コードを進めるために必要なヘッダーファイルと名前空間をインクルードします。
#include <iostream>
#include <fstream>
using namespace std;
1 つのファイルを別のファイルにコピーする
このステップでは、以下の操作を行います。
ifstreamとofstreamクラスのオブジェクトを作成します。- それらがそれぞれのファイルに接続されているかどうかを確認します。接続されていれば処理を続け、そうでなければファイル名を 2 回確認します。ソースファイルの内容を
getline()メソッドを使って読み取り、<<演算子を使って同じ内容を宛先に書き込みます(つまり、ifstreamオブジェクトの各行をofstreamオブジェクトにコピーします)。 - コピー後に
close()メソッドを使ってファイルを閉じます。
void copyFile(string sourceFile, string destinationFile){
string line;
// creating ifstream and ofstream objects
ifstream sourceFileStream(sourceFile);
ofstream destinationFileStream(destinationFile);
// Reading from source file and writing to destination file
if(sourceFileStream.is_open() && destinationFileStream.is_open()){
while(getline(sourceFileStream, line)){
destinationFileStream << line << "\n";
}
cout<<"Copy Finished"<<endl;
}
else{
printf("Cannot read File");
}
//closing file
sourceFileStream.close();
destinationFileStream.close();
}
メイン関数
このステップでは、copyFile() 関数を呼び出してファイルコピー操作を行うためのメイン関数を作成します。
int main(){
string sourceFile = "original.txt";
string destinationFile = "copy.txt";
copyFile(sourceFile, destinationFile);
return 0;
}
コンパイルと実行
このステップでは、コードファイルが ~/project/main.cpp に保存されているため、カレントディレクトリを ~/project に変更して、ターミナルで以下のコマンドを実行できます。
g++ main.cpp -o main
./main
これにより、プログラムがコンパイルされて実行され、以下の出力が生成されます。
Copy Finished
最終コード
#include <iostream>
#include <fstream>
using namespace std;
void copyFile(string sourceFile, string destinationFile){
string line;
// ifstream と ofstream オブジェクトを作成
ifstream sourceFileStream(sourceFile);
ofstream destinationFileStream(destinationFile);
// ソースファイルから読み取り、宛先ファイルに書き込む
if(sourceFileStream.is_open() && destinationFileStream.is_open()){
while(getline(sourceFileStream, line)){
destinationFileStream << line << "\n";
}
cout<<"コピー完了"<<endl;
}
else{
printf("ファイルを読み取れません");
}
// ファイルを閉じる
sourceFileStream.close();
destinationFileStream.close();
}
int main(){
string sourceFile = "original.txt";
string destinationFile = "copy.txt";
copyFile(sourceFile, destinationFile);
return 0;
}
まとめ
この実験では、C++ 言語のファイル操作メソッドを使って、ユーザーが 1 つのファイルの内容を別のファイルにコピーできるアプリケーションを作成しました。



