はじめに
この実験では、ファイルから数値を読み取り、それを逐行加算して結果を別のファイルに出力する方法を学びます。このチュートリアルの手順に従うことで、以下のことができる C++ プログラムを作成する方法を学びます。
この実験では、ファイルから数値を読み取り、それを逐行加算して結果を別のファイルに出力する方法を学びます。このチュートリアルの手順に従うことで、以下のことができる C++ プログラムを作成する方法を学びます。
~/project
ディレクトリに file_sum.cpp
という名前の新しいファイルを作成します。
touch ~/project/file_sum.cpp
C++ でファイルを扱うには、プログラムに <iostream>
と <fstream>
のライブラリをインクルードする必要があります。file_sum.cpp
ファイルに以下のコードを追加します。
#include <iostream>
#include <fstream>
using namespace std;
ユーザにファイル名を入力させます。file_sum.cpp
ファイルに以下のコードを追加します。
int main()
{
char fileName[50];
cout << "Enter file name: ";
cin.getline(fileName, 50);
ifstream inFile(fileName);
ofstream outFile("sum.txt");
string line;
}
ここでは、ユーザが入力するファイル名を保持するための char 配列 fileName
を宣言しています。その後、ユーザにファイル名を入力させ、fileName
配列に格納します。最後に、入力ファイル inFile
を開くための ifstream
オブジェクトと、出力ファイル outFile
を作成するための ofstream
オブジェクトを作成します。また、入力ファイルの各行を格納するための line
文字列も宣言しています。
次に、ファイルを読み取り、各行の数値を合計するコードを書きます。ファイルの各行に対して、stringstream
オブジェクトを使って数値を読み取り、合計して出力ファイルに書き込みます。file_sum.cpp
ファイルに以下のコードを追加します。
while (getline(inFile, line))
{
int sum = 0;
stringstream ss(line);
int num;
while (ss >> num)
{
sum += num;
}
outFile << sum << endl;
}
ここでは、while
ループを使って入力ファイルの各行を読み取り、その行を line
文字列に格納します。その後、sum
変数を 0
で初期化し、各行の内容を保持する stringstream
オブジェクト ss
を作成します。そして、stringstream
から各数値を num
に抽出し、各数値で sum
変数を増やします。行のすべての数値が処理された後、sum
を出力ファイル outFile
に書き込みます。
最後に、入力ファイルと出力ファイルを閉じ、ファイルが処理されたことをユーザに通知する必要があります。file_sum.cpp
ファイルに以下のコードを追加します。
inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;
以下のコマンドを使って file_sum.cpp
コードをコンパイルします。
g++ file_sum.cpp -o file_sum
ターミナルで以下のコマンドでコードを実行します。
./file_sum
処理したいファイル名の入力を求められます。名前を入力してエンターキーを押します。プログラムはファイルを読み取り、行ごとに数値を合計し、結果を sum.txt
という新しいファイルに書き込みます。
以下は file_sum.cpp
ファイルの完全なコードです。
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
char fileName[50];
cout << "Enter file name: ";
cin.getline(fileName, 50);
ifstream inFile(fileName);
if (!inFile)
{
cerr << "Unable to open file" << endl;
return -1;
}
ofstream outFile("sum.txt");
string line;
while (getline(inFile, line))
{
int sum = 0;
stringstream ss(line);
int num;
while (ss >> num)
{
sum += num;
}
outFile << sum << endl;
}
inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;
}
この実験では、C++ の標準ライブラリ <iostream>
と <fstream>
および stringstream
クラスを使って、ファイルを読み取り、その数値を行ごとに合計し、結果を別のファイルに書き込む方法を学びました。これで、あなたはファイルを扱い、C++ プログラムで多くの基本的なファイル操作を行うことができるようになりました。