テキストファイル入出力のひな型Visual C++/CLRプログラム
本ウェブサイトでは.NET対応のVisual C++/CLRプログラミングの場合におけるテキストファイル入出力について説明するが、
標準C++準拠(?)であるVisual C++/Win32プログラミングの場合は別のウェブサイトで説明している。
一般的なウィンドウ・フォーム・アプリケーションの作成法については、
<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>の第12章「フォーム・プログラミング」
で詳しく説明している。
データをテキストファイルから読み込み、計算結果をテキストファイルに書き出すプログラムの作成のためのひな型プログラムを作成する。まず、フォームにButtonコントロールとOpenFileDialogコントロールおよびSaveFileDialogコントロールを張り付ける。OpenFileDialogコントロールとSaveFileDialogコントロールは、フォームに張り付けられるとフォームの下のコンポーネント・トレイに移動して表示される(図1)。
図1 フォームの準備。
図1の状態で「button1」ボタンをダブルクリックすると、エディタに次のbutton1_Clickメンバー関数が自動的に挿入されたコードが表示される。
図2 エディタ画面に挿入されたメンバ関数。
図2の関数に下記のコードを書き加える。
private: System::Void
button1_Click(System::Object^
sender, System::EventArgs^
e) {
//
// 入出力ファイルの名の設定
//
openFileDialog1->Title = "入力データファイル名";
if
(openFileDialog1->ShowDialog() ==
System::Windows::Forms::DialogResult::Cancel) return;
saveFileDialog1->Title = "出力ファイル名";
if
(saveFileDialog1->ShowDialog() ==
System::Windows::Forms::DialogResult::Cancel) return;
using namespace System::IO;
//
// 入力ストリームと出力ストリームの設定
//
StreamReader ^ fin = gcnew StreamReader( openFileDialog1->FileName,
System::Text::Encoding::GetEncoding("shift-jis")
);
StreamWriter ^ fout = gcnew StreamWriter( saveFileDialog1->FileName, false, System::Text::Encoding::GetEncoding("shift-jis") );
String ^ s;
while ((s
= fin->ReadLine()) != nullptr)
fout->WriteLine(s);
fin->Close();
fout->Close();
MessageBox::Show(saveFileDialog1->FileName
+ " was saved.");
Close();
}
書き加えた後、ビルド実行すると、入力ファイルとして読み込んだ内容が出力ファイルにそのまま書き出される。プログラムファイルはsample.zipとして圧縮ファイルにまとめた。ファイル名sample.zipをクリックしてダウンロードできる。ダウンロードしたファイルは、マウスの右ボタンで表示されるメニュ「解凍」あるいは「展開」などを選ぶと解凍できる。解凍したファイルをVisual C++などで開けば、ビルド実行できる。実行形式のファイルsample.exeもアップロードしたので、ファイル名sample.exeをクリックして直接実行することができる。ただし、プログラムは.NET Framework3.5対応である。
なお、テキストファイルの入出力用のクラス型(入力用のストリームStreamReaderと出力用のストリームStreamWriter)については、<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>の第13章「テキストファイル入出力」で詳しく説明している。ウィンドウ・フォーム・アプリケーションの作成法については、<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>の第12章「フォーム・プログラミング」で詳しく説明している。作成したフォームを他のプログラムで再利用する方法については<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>の第17章「フォームの再利用」>で詳しく説明している。
バイナリファイル入出力のためのクラス型BinaryReaderとBinaryWriterについては、<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草書房>のp. 295でとりあげ、サンプルプログラムをリストA1-2として用意している。