アフィリエイト広告を利用しています

広告

posted by fanblog

2018年03月20日

《その343》 問題演習 p.449演習12-4



新版明解C++中級編 p.449 演習12-4
 本ブログ《342》演習12-3 のプログラムに、現在の"気分"を表す文字列を追加したプログラムを作成せよ。
すなわち、前回実行時の時刻と気分を表示した後に、『現在の気分は : 』と入力を促し、キーボードから入力された気分を表す文字列を読み込んでファイルに書き込む。
 たとえば、"最高!"と入力があった場合、次回の実行時に、
『前回の実行は 2018/03/20_12:34:56。気分は「最高!」でした。』のように表示すること。



// 解答

#pragma warning(disable:4996)
#include <iomanip>
#include <ctime>
#include <sstream>
#include <fstream>
#include <iostream>
using namespace std;

class Date {
int y; // 年
int m; // 月
int d; // 日
int h; // 時
int min; // 分
int s; // 秒
public:
Date() {
time_t current = time(NULL);
struct tm* local = localtime(&current);
y = local->tm_year + 1900;
m = local->tm_mon + 1;
d = local->tm_mday;
h = local->tm_hour;
min = local->tm_min;
s = local->tm_sec;
}

// 文字列作成
std::string to_string() const {
std::ostringstream so;
so << y << '/' << setfill('0')
<< setw(2) << m << '/'
<< setw(2) << d << '_'
<< setw(2) << h << ':'
<< setw(2) << min << ':'
<< setw(2) << s << '\n';
return so.str();
}
};

char fname[] = "lasttime.txt";

void get_data() {
ifstream fis(fname);

if (fis.fail())
// オープンに失敗した場合
cout << "初めての実行\n";
else {
// 前回日時と気分の読込み・画面表示
ifstream fis("text.txt");
string str, feeling;
fis >> str;
fis >> feeling;
cout << "前回の実行は " << str
<< "。気分は「"
<< feeling << "」でした。\n";
fis.close();
}
}

// 今回の日時と気分を書込む
void put_data() {
ofstream fos(fname);

if (fos.fail())
cout << "\aファイルをオープンでき"
"ません。\n";
else {
string feeling;
cout << "現在の気分は : ";
cin >> feeling;
ofstream fos("text.txt");
Date now;
fos << now.to_string() << '\n';
fos << feeling << '\n';
}
}

int main() {
get_data();
put_data();
}

h12_0401.png

h12_0402.png



この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/7457723
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。