質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

ログファイル出力の際、ログのメッセージに現在時刻を付随させたいです。

don
don

総合スコア10

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0評価

0クリップ

161閲覧

投稿2022/06/20 15:00

適当な関数の一連の処理のログを出力するコードをC++で書いています。

ログメッセージをファイル(.log)に出力する際に、現在時刻を付随させたいのですが
ファイル内にコード上で取得した時刻を書き込む方法がわかりません。
構造体から得た情報を文字列に変換する、という処理が必要なのかと考察してみましたが、
その方法がわかりませんでした。

関数名 void outputCurrentTime() と void writeLog(string LogMessage)
をどのように訂正すれば良いかご教授願いたいです。

以下がソースコードになります。
おかしい点など、ご指摘ください。よろしくお願いいたします。

C++

#include <iostream> #include <string> #include <fstream> #include <sstream> #include <windows.h> using namespace std; string gLogMessage = "ログファイル出力開始"; void outputCurrentTime() { SYSTEMTIME UTC; SYSTEMTIME Local; TIME_ZONE_INFORMATION getTimezone; GetTimeZoneInformation( &getTimezone ); GetSystemTime( &UTC ); SystemTimeToTzSpecificLocalTime( &getTimezone, &UTC, &Local ); ofstream outputLog; outputLog << Local.wYear << "/" << Local.wYear << "/" << Local.wMonth << "/" << Local.wDay << "/" << Local.wHour << ":" << Local.wMinute << ":" << Local.wSecond << ":" << Local.wMilliseconds; } void writeLog( string strLogMessage ) { outputCurrentTime(); gLogMessage += strLogMessage; } void swap( int *pNum1, int *pNum2 ) { writeLog( "->call->swap\n" ); //pNum1 = NULL; // (異常系を通る場合の確認用) //pNum2 = NULL; if( NULL != pNum1 && NULL != pNum2 ){ if( *pNum1 > *pNum2 ){ int nTmp = *pNum1; *pNum1 = *pNum2; *pNum2 = nTmp; writeLog( "->Number was swaped.\n" ); } writeLog( "->end->swap\n" ); } else{ writeLog( "->error->NULLポインター\n" ); } } //bool outputLogFile() //{ // ofstream outputLogFile; // outputLogFile.open( "G:\\問題23.log", ios::app ); // outputLogFile << gLogstr << endl; // outputLogFile.close(); // return true; //} bool outputLogFile() { ofstream outputLog; outputLog.open( "C:\\ログファイル.log", ios::app ); /*confirmFileOpen( outputLogFile );*/ SYSTEMTIME UTC; SYSTEMTIME Local; TIME_ZONE_INFORMATION getTimezone; GetTimeZoneInformation( &getTimezone ); GetSystemTime( &UTC ); SystemTimeToTzSpecificLocalTime( &getTimezone, &UTC, &Local ); outputLog << Local.wYear << "/" << Local.wYear << "/" << Local.wMonth << "/" << Local.wDay << "/" << Local.wHour << ":" << Local.wMinute << ":" << Local.wSecond << ":" << Local.wMilliseconds; outputLog << gLogMessage << endl; outputLog.close(); return true; } void confirmFileIsOpened( ofstream outputLogFile ) { if( false == outputLogFile.is_open() ){ cout << "ファイルが開けませんでした。" << endl; writeLog( "->File couldn't open!\n" ); } writeLog( "->File was opened.\n" ); } void confirmOutputSuccessOrFail() { int nOutputLogFile = outputLogFile(); if( true == nOutputLogFile ){ cout << "ファイルを作成し、書き込みました。" << endl; writeLog( "->LogFile was outputted.\n" ); } else{ cout << "ファイル作成出来ませんでした。" << endl; writeLog( "->LogFile couldn't output!\n" ); } } int inputNum() { int nNum = 0; while( 1 ){ cout << "数値を入力してください。" << endl;; cin >> nNum; if( cin.fail() ){ cin.clear(); cin.ignore( 256, '\n' ); writeLog( "->error input!\n" ); continue; } break; } writeLog( "->Numbers were inputted.\n" ); return nNum; } int main() { int nFirstNum = inputNum(); int nLastNum = inputNum(); swap( &nFirstNum, &nLastNum ); cout << "\n処理結果 \n" << endl; cout << " firstNumber = " << nFirstNum << endl; cout << " secondNumber = " << nLastNum << endl; outputLogFile(); confirmOutputSuccessOrFail(); return 0; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。