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通常更好,因为文件将从最旧到最新排序。

编辑:啊,为了让我的最后一个陈述成立,你还需要用零到两位数填充月份和日期,即有类似2011-08-05.


啊,我看到时间附加也做错了。您不能将整数附加到这样的字符串。@hmjd 已经向您发布了一种解决此问题的方法;但我认为最好只使用专用的时间->字符串转换方法。

我不是 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 回答