示例#1
0
//##############################################################################
//# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
//##############################################################################
xString xTime::format(xString format)
{
	int formatBaseSize = 16;
	xchar* buffer;
	size_t bufferSize;
	for(int i = 1;;i++)
	{
		bufferSize = format.size() + (formatBaseSize * i);
		buffer = (xchar*) malloc(bufferSize * sizeof(xchar));
		buffer[0] = _T('\1');
		
		#ifndef XTK_UNICODE
			size_t ret = strftime(buffer,bufferSize,format.c_str(),&m_time);
		#else
			size_t ret = wcsftime(buffer,bufferSize,format.c_str(),&m_time);
		#endif
		
		if(((ret < bufferSize) && ret != 0) || (ret == 0 && buffer[0] == _T('\0')))
		{
			xString s(buffer,ret);
			free((void*) buffer);
			return s;
		}
	}
}