2016-08-20 6 views
0

"ErrorReport_date_time.rpt"という形式のファイル名でエラーレポートを出力したいとします。現時点では、ファイルを "ErrorReport.rpt"として出力することも、拡張子を付けずに出力することもできますが、日付と時刻を追加するとファイルは作成されません。日付を追加するときにファイルが出力されない

void ErrorHandler::Open(char const filename[]) 
{ 
    string fileType = ".rpt"; 

    time_t t = time(0); 
    struct tm * now = localtime(&t); 

    stringstream ss; 

    ss << filename 
     << (now->tm_year + 1900) << '-' 
     << (now->tm_mon + 1) << '-' 
     << (now->tm_mday) << '_' 
     << (now->tm_hour) << ':' 
     << (now->tm_min) << ':' 
     << now->tm_sec 
     << fileType 
     << endl; 

    fileHandler->OpenFile(ss.str()); 
} 

ファイルハンドラが開いて閉じ、ファイルに正常に書き込むとすれば、どこが間違っていますか?

+0

あなたの質問に[mcve]を指定しないと間違っています。 –

+3

どのようなOSですか? Windowsは ':'やそれに類する文字をafaikのファイル名に持つことはできません。 –

+1

なぜ 'endl'がファイル名に追加されますか? – MikeCAT

答えて

1

:またはendlをファイル名に使用することはできません。

+0

このような小さな監視のために、実際には私の心の痛みをたくさん提供しましたが、これは実際に正しい答えであり、問​​題を緩和しました! – hiiii5

+0

Windowsでは、ファイルシステムがNTFSの場合、 ':' *はファイル名で使用できます。 ':'を使うと、 ':'の前にファイル名で指定されたファイル内に[データストリーム](https://msdn.microsoft.com/en-us/library/windows/desktop/aa364404.aspx)を作成することができます。例えば、 'file:strm'のファイル名は' file'という名前のファイルに 'strm'という名前のストリームを作成します。 –

関連する問題