2

たくさんのデータを別々のテキストファイルに出力するプログラムを書こうとしています。各ファイルのタイトルをPoker_Log_timestamp_datestamp.txtにします。 ただし、実際にはファイルが作成されたり、エラーが発生したりすることはありません。

コードは次のとおりです。

#include <fstream>
#include <iostream>
#include <ctime>
#include <string>
using namespace std;

int main(){
    char sdate[9];
    char stime[9];
    fstream log;
    _strdate_s(sdate);
    _strtime_s(stime);
    string filename = "Poker_Log_";
    filename.append(stime);
    filename.append("_");
    filename.append(sdate);
    filename.append(".txt");
    cout<<"Filename == "<<filename<<endl;
    log.open(filename.c_str());
    log<<"\n\nHuman won the tournament.\n";
    log.close();
    system("Pause");
}

これを機能させるにはどうすればよいですか?もう1つ、コメントアウトして、正常にfilename.append(stime)動作filename.append(sdate)します。

解決済み:Dファイル名にスラッシュやコロンを含めることができないため、両方をダッシュ​​に置き換えました。動作するコードは次のとおりです。

#include <fstream>
#include <iostream>
#include <ctime>
#include <string>
#include <cstdio>

using namespace std;

int main(){
    char sdate[9];
    char stime[9];
    ofstream log;
    _strdate_s(sdate);
    _strtime_s(stime);
    string filename = "Poker_Log_";
    filename.append(stime);
    filename.append("_");
    filename.append(sdate);
    filename.append(".txt");
    for(int i = 0; i<filename.length(); ++i){
        if (filename[i] == '/' || filename[i] == ':')
            filename[i] = '-';
    }
    log.open(filename.c_str());
    if (log.fail())
        perror(filename.c_str());

    log<<"\n\nHuman won the tournament.\n";
    log.close();
    system("Pause");
}
4

2 に答える 2

3

日付と時刻の文字列には、ファイル システムで使用できない文字 (コロンなど) が含まれている場合があります。

于 2013-03-01T17:30:23.177 に答える
2

以下を使用します。

   log.open(filename.c_str());

このopenメソッドにはchar *、C++ ではなく、C スタイルの文字列とも呼ばれるが必要ですstd::string

于 2013-03-01T16:12:07.687 に答える