0

コンピューターから取得したシステム日付を使用し、それを .txt ファイルの名前として使用したいと考えています。これが私がこれまでに持っているものです:

void idle_time()
{
LASTINPUTINFO last_info;
last_info.cbSize = sizeof(LASTINPUTINFO);
int tickCount = 0;
int minutes = 0;
int count = 0;
SYSTEMTIME a;

while(true)
{
    GetLastInputInfo(&last_info);
    tickCount = GetTickCount();
    int minutes = (tickCount - last_info.dwTime) / 60000;
    count++;

    string date;
    date += a.wMonth;
    date += "/";
    date += a.wDay;
    date += "/";
    date += a.wYear;

    if((minutes >= 1) && (count%3000==0))
    {
        //std::string filename = date;
        //filename += ".txt";
        ifstream in(string(date + ."txt").c_str());
        float sum;
        in >> sum;
        sum++;
        in.close();
        ofstream out(string(date + ".txt").c_str());
        out << sum;
        out.flush();
        out.close();

    }

ひどい凹みですみません。この編集者はそれを正当化していません。とにかく、日付をファイル名として使用するにはどうすればよいですか?

4

1 に答える 1

2

使用dateしている文字列には/、パス内のディレクトリを区切るために使用される文字が含まれています。それらを別の(禁止されていない)文字に置き換えるだけです。

m/d/Yまた、ファイル名に日付形式を使用しないことをお勧めします。彼らはうまく分類されません。Y-m-dファイルは古いものから新しいものへとソートされるため、通常はより適切です。

編集:ああ、そして私の最後のステートメントが真であるためには、月と日を0から2桁で埋める必要があります。つまり、のようなものがあり2011-08-05ます。


ああ、時間の追加も間違って行われているようです。そのような文字列に整数を追加することはできません。@hmjdは、これを解決する1つの方法をすでに投稿しています。しかし、専用の時間->文字列変換方法を使用する方が良いと思います。

私はWindowsプログラマーではないので、このSYSTEMTIMEことについてはあまり役に立ちません。おそらくGetTimeFormat()を使用する必要があります。しかし、これは標準のC / C ++ strftime()でそれを解決する簡単な例です:

char date_buf[11];
time_t a = time(0);

strftime(date_buf, sizeof(buf), "%Y-%m-%d", gmtime(&t));

date += buf;

UTCではなくローカルタイムゾーンの日付が必要な場合は、のlocaltime()代わりにを使用しgmtime()ます。

それが誰かを助けることを願っています。私はGetTimeFormat()同じように機能すると信じているので、おそらくこれはあなたを少し導くことができます。

于 2012-07-30T20:36:16.787 に答える