2018年03月18日
《その339》 問題演習 p.443演習12-2
新版明解C++中級編 p.443 演習12-2
前回《338》演習12-1 の問題文中にあるプログラムにおいて、関数 file_exist でオープンするストリームを、ifstream型から ofstream型に書きかえると、オープンしたファイルの内容が全部消去されることを確認せよ。
なお、ファイル名入力の際の表示を、「中身を空にするファイルの名前 : 」に変更し、さらに必要なら、関数名 file_exist や、その他のコードを、適宜、変更してかまわない。
// 解答
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
// ファイルの中身を空にする関数
bool file_delchr(const char* filename) {
ofstream fis(filename);
return fis.is_open();
}
void func(const char* filename) {
ifstream fis(filename);
if (!fis) {
cout << "ファイルをオープン"
"できません。\n";
exit(1);
}
else {
cout << "------------\n";
for (;;) {
string tmp;
fis >> tmp;
if (!fis) break;
cout << tmp << '\n';
}
cout << "------------\n";
fis.close();
}
}
int main() {
string file_name;
cout << "中身を空にするファイル"
"の名前 : ";
cin >> file_name;
cout << "【消去前】\n";
func(file_name.c_str());
file_delchr(file_name.c_str());
cout << "\n【消去後】\n";
func(file_name.c_str());
}
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7449621
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック