Visual C++ 2015と2017 RCで、以下のプログラムが期待どおりに動きませんでした。
#include <iostream> #include <sstream> #include <iomanip> #include <ctime> int main() { std::istringstream s("20170110"); std::tm x = {}; s >> std::get_time(&x, "%Y%m%d"); char buf[255]; strftime(buf, sizeof(buf), "%Y-%m-%d", &x); std::cout << buf << std::endl; } |
%Yで2017だけパースされることを期待しているのですが、Visual C++の実装では、20170110まで読み込んでしまうようになっていました。
libstdc++やlibc++では、ちゃんと2017だけ読み込む実装だったので、Visual C++のほうに問題がありそうです。
2017年1月15日追記: 同じ問題が報告されているのを見つけました。std::get_time fails when using formats without separators – Developer Community
スポンサード リンク |