C++ std::get_time中的日期时间格式
如何修改此代码,以便能够将字符串“22/12/2016 01:12:10”正确解析为日期时间变量C++ std::get_time中的日期时间格式,c++,C++,如何修改此代码,以便能够将字符串“22/12/2016 01:12:10”正确解析为日期时间变量 struct tm date_time = {}; std::wstring dateTimeFormat{ L"%d/%m/%Y %H:%M:%S" }; std::istringstream ss("22/12/2016 01:12:10"); ss >> std::get_time(&date_time, dateTimeFormat.c_str()); 1>c
struct tm date_time = {};
std::wstring dateTimeFormat{ L"%d/%m/%Y %H:%M:%S" };
std::istringstream ss("22/12/2016 01:12:10");
ss >> std::get_time(&date_time, dateTimeFormat.c_str());
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools
\msvc\14.12.25827\include\iomanip(190): error C2338: wrong character type for
get_time
1>c:\...\procedure.cpp(70): note: see reference to function template
instantiation 'std::basic_istream<char,std::char_traits<char>> &std::operator
>><char,std::char_traits<char>,_Elem>(std::basic_istream<char,std::char_traits<char>>
&,const std::_Timeobj<_Elem,tm *> &)' being compiled
1> with
1> [
1> _Elem=wchar_t
1> ]
1>Done building project "projectname" -- FAILED.
struct tm date\u time={};
std::wstring dateTimeFormat{L”%d/%m/%Y%H:%m:%S“};
std::istringstream ss(“22/12/2016 01:12:10”);
ss>>std::get_time(&date_time,dateTimeFormat.c_str());
1> c:\ProgramFiles(x86)\microsoft visual studio\2017\community\vc\tools
\msvc\14.12.25827\include\iomanip(190):错误C2338:的字符类型错误
抓紧时间
1> c:\…\procedure.cpp(70):注意:请参阅函数模板的参考
实例化“std::basic\u istream&std::operator”
>>(标准:基本信息流)
&,const std::_Timeobj&)正在编译
1> 与
1> [
1> _Elem=wchar\t
1> ]
1> 已完成生成项目“projectname”--失败。
您正在混合宽字符和窄字符
对于宽字符,代码应为:
struct tm date_time = {};
std::wstring dateTimeFormat{L"%d/%m/%Y %H:%M:%S"};
std::wistringstream ss(L"22/12/2016 01:12:10");
ss >> std::get_time( &date_time, dateTimeFormat.c_str() );
struct tm date_time = {};
std::string dateTimeFormat{"%d/%m/%Y %H:%M:%S"};
std::istringstream ss("22/12/2016 01:12:10");
ss >> std::get_time( &date_time, dateTimeFormat.c_str() );
对于窄字符,应为:
struct tm date_time = {};
std::wstring dateTimeFormat{L"%d/%m/%Y %H:%M:%S"};
std::wistringstream ss(L"22/12/2016 01:12:10");
ss >> std::get_time( &date_time, dateTimeFormat.c_str() );
struct tm date_time = {};
std::string dateTimeFormat{"%d/%m/%Y %H:%M:%S"};
std::istringstream ss("22/12/2016 01:12:10");
ss >> std::get_time( &date_time, dateTimeFormat.c_str() );
无论哪种方式,都需要以下标题:
#include <iomanip>
#include <sstream>
#包括
#包括
std::wstring
和std::istringstream
不太协调。std::string
和std::stringstream
也不起作用。另外,我得到了116年,我想这是因为2016-1900=116,也就是说,我总是在输出年加上1900。这个字符串还有其他“水下的石头”吗?