0
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);
}

这是我的代码。它将包含日期和时间的 wstring 转换为DATE类型。但是,当我运行这部分代码时,当调试器离开此函数范围时,它总是抛出异常,说“缓冲区溢出”。我也尝试将其更改为void ConvertDateIntoSystemFormat(std::wstring dateModified,DATE* date)并尝试在将其传递给此函数时为日期分配内存或尝试使用LPSYSTEMTIME而不是SYSTEMTIME,或尝试在函数内部DATE ConvertDateIntoSystemFormat(std::wstring dateModified)声明DATE date但它们都不起作用,缓冲区溢出问题仍然发生。如何解决这个问题?

在此处输入图像描述

4

1 回答 1

1

所有SYSTEMTIME字段都有WORD类型(aka short),而 format%d需要一个指向int. 使用 . 修复格式字符串%hd

于 2018-05-01T22:37:36.873 回答