C++ strptime 给出错误的结果

C++ strptime giving wrong results

我正在解析一个包含格式为 DD/MM/YYYY HH:MM:SS 的字符串的文件。我正在尝试读取它们并将它们转换为 Unix 时间戳,使用以下代码:

tm tm;
cout << datestr << endl;
strptime(str.c_str(), "&d/&m/&Y %H:&M:&S", &tm);
cout << tm.tm_year << " " << tm.tm_mon << " " << tm.tm_mday << " " << tm.tm_hour << " " << tm.tm_min << " " << tm.tm_sec << " " << endl;
timestamp = mktime(&tm);

这是我 运行 程序时发生的情况 :

24/01/2014 00:04:42
4 6 31 4 1 8 

问题出在哪里?我还注意到,无论格式如何,它似乎都提供相同的输出。

根据 man page,转换说明符使用 % 字符,而不是您使用的 &

因此,应使用以下代码:

strptime(str.c_str(), "%d/%m/%Y %H:%M:%S", &tm);