我想使用计算机中的系统日期,并将其用作.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();
}
我很抱歉这个可怕的缩进。这位编辑不公正。但无论如何,我如何使用日期作为文件名?
答案 0 :(得分:2)
您使用的date
字符串包含/
个字符,用于分隔路径中的目录。您只需要用另一个(非禁止的)角色替换它们。
我还建议您不要将m/d/Y
日期格式用于文件名。他们排序不好。 Y-m-d
通常更好,因为文件将从最旧到最新排序。
编辑:啊,并且为了我的上一个陈述是真的,你还需要用0到2位填充月和日,即类似2011-08-05
。< / p>
啊,我看到附加的时间也不正确。你不能将整数附加到这样的字符串。 @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()
的工作方式类似,所以也许这可以指导你一点。