这是一个偶现的问题,在vc2013的c++环境下出现,Debug x64,最早出现在下面的代码中:
wchar_t temp[128] = { 0 };
swprintf_s(temp, 128, L"%04d-%02d-%02d %02d:%02d:00", i1, i2, i3, i4, i5);
sStartTime = temp;//以当前日期时间为例,sStartTime正常应为 L"2021-10-14 09:19:53",实际却为L"-10-14 09:19:53"
代码的目的是为了将int类型存储的各部分日期合成一个特定格式的日期字符串,i1到i5均为int类型的参数(i1-i5为简化表示参数,不要过分纠结),以当前日期时间为例,sStartTime 应该是:L"2021-10-14 09:19:53",但实际上却出现了调试过程中发现sStartTime 为L"-10-14 09:19:53"的情况
由于该问题只在调试过程中出现,实际软件运行中未出现过,所以一直没有特别留意,直到今天调试时在另一处代码又出现了一个类似的情况:
namespace MC{
namespace DEVICEINI{
const std::wstring PRINTER_RUN_LAST_TIME = L"printer_run_last_time";
}
}
...
std::map<std::wstring, std::wstring> sMap;
sMap[MC::DEVICEINI::PRINTER_RUN_LAST_TIME] = sTime;//查看sMap内部变量时发现,唯一键值对的键为L"ter_run_last_time"
该部分代码运行后,发现sMap中存储的唯一键值对的键竟然是L"ter_run_last_time",这就令人难以理解了
是否有人遇到过这种情况,又是什么原因会导致该问题的出现?