我在visual studio 2015中有以下几行。以前在Visual Studio 2013中编译时没有错误。
const std::basic_regex<wchar_t> e(_T("([eE][-+])(0)(\\d{2})"));
io_string = std::regex_replace(io_string, e, _T("$1$3"));
错误是:
错误C2664:&#39; std :: basic_regex&gt; :: basic_regex(std :: basic_regex&gt;&amp;&amp;)noexcept&#39;:无法转换参数1来自&#39; const char [21]&# 39; to&#39; const wchar_t *&#39;
错误C2672:&#39; std :: regex_replace&#39;:找不到匹配的重载函数 4&GT;
错误C2784:&#39; std :: basic_string&lt; _Elem,std :: char_traits&lt; _Elem&gt ;,std :: allocator&lt; _Other&gt;&gt; std :: regex_replace(const _Elem *,const std :: basic_regex&lt; _Elem,_RxTraits&gt;&amp;,const _Elem *,std :: regex_constants :: match_flag_type)&#39;:无法推断出&#39; const的模板参数_Elem *&#39;来自&#39; std :: string_t&#39;
我知道这个问题来自改变tchar.h。任何解决它们的建议。我还使用CMake进行项目配置,项目在Windows 10上运行。
答案 0 :(得分:0)
假设您不想更改代码,则需要确保代码正在为Unicode构建,因此请将-D_UNICODE
传递给编译器。 This post suggests:
ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-D_UNICODE)
this one说明了如何通过GUI启用Unicode。