void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE& date)
{
SYSTEMTIME systemTime;
memset(&systemTime, 0, sizeof(systemTime));
sscanf_s(ConvertWstringToCharStar(dateModified), "%d-%d-%dT%d:%d:%d.%dZ",
&systemTime.wYear, &systemTime.wMonth, &systemTime.wDay, &systemTime.wHour, &systemTime.wMinute, &systemTime.wSecond, &systemTime.wMilliseconds);
SystemTimeToVariantTime(&systemTime, &date);
}
Вот мой код Он преобразует строку, содержащую дату и время, вDATE
тип.
Тем не менее, когда я запускаю эту часть кода, он всегда выдает исключения, которые говорят «переполнение буфера», когда отладчик покидает область действия этой функции.
Я также пытался изменить это void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE* date)
и попробуйте выделить память на дату, когда передаете ее этой функции или пытаетесь использовать LPSYSTEMTIME
вместо SYSTEMTIME
или пытался DATE ConvertDateIntoSystemFormat(std::wstring dateModified)
с объявить DATE date
внутри функции, но ни одна из них не работает, проблема переполнения буфера все еще возникает.
Как решить эту проблему?
Все SYSTEMTIME
поля имеют WORD
тип (иначе short
) пока формат %d
ожидает указатель на int
, Исправить строку формата с помощью %hd
,
Других решений пока нет …