我有char[]
格式的时间,但我需要将其转换为CString
。这是我的,但它不起作用:
GetSystemTime(&t);
char time[60] = "";
char y[20],mon[20],d[20],h[20],min[20],s[20];
sprintf(y, "%d", t.wYear);
sprintf(d, "%d", t.wDay);
sprintf(mon, "%d", t.wMonth);
sprintf(h, "%d", t.wHour+5);
sprintf(min, "%d", t.wMinute);
sprintf(s, "%d", t.wSecond);
strcat(time,d);
strcat(time,"/");
strcat(time, mon);
strcat(time,"/");
strcat(time, y);
strcat(time," ");
strcat(time,h);
strcat(time,":");
strcat(time, min);
strcat(time,":");
strcat(time, s);
CString m_strFileName = time;
任何帮助...... :(?
答案 0 :(得分:1)
如果你有一个文件扩展名,那么放置它的最佳位置是在格式化日期字符串时在sprintf / CString :: Format调用中。 此外,通常在格式化文件名的日期时,它会以相反的顺序yyyy / mm / dd完成,以便在Windows资源管理器中正确排序。
1在我跳入一些代码之前的最后一件事:Windows中的文件名有无效字符,其中包括斜杠字符[编辑]和冒号字符[/编辑]。通常使用点或短划线代替文件名。 我的解决方案使用您使用的斜杠和日期格式,与代码保持一致,但如果您将其用于文件名,则至少应更改斜杠。
让我为您提供一些解决方案:
1:与你的相似:
char time[60];
sprintf(time, "%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
CString m_strFileName(time); //This uses the CString::CString(const char *) constructor
//Note: If m_strFileName is a member variable of a class (as the m_ suggests), then you should use the = operator and not the variable declaration like this:
m_strFileName = time; //This variable is already defined in the class definition
2:使用CString::Format
CString m_strFileName; //Note: This is only needed if m_strFileName is not a member variable of a class
m_strFileName.Format("%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
3:你为什么使用CString?
如果它不是类的成员变量,那么您不需要使用CString就可以直接使用时间。
char time[60];
sprintf(time, "%u/%u/%u %u:%u:%u", t.wDay, t.wMonth, t.wYear, t.wHour + 5, t.wMinute, t.wSecond);
FILE *pFile = fopen(time, "w");
//or...
HANDLE hFile = CreateFile(time, ...);
更新:向您首先提出的答案:
NO CString::GetBuffer用于获取可写入的CString的可变缓冲区,通常作为sprintf,GetModuleFilename,...函数的缓冲区。
如果您只想读取字符串的值,请使用如下的强制转换运算符:
CString str("hello");
printf("%s\n", (LPCSTR)str); //The cast operator here gets a read-only value of the string
答案 1 :(得分:0)
您可以使用std :: ostringstream和std :: string将时间转换为字符串。 像这样的东西。我已经表现了几秒钟,你可以做几个小时,几分钟等。
int seconds;
std::ostringstream sec_strm;
sec_strm << seconds;
std::string sec_str(sec_strm.c_str());