2016-11-09 2 views
1

я следующие строки в визуальной студии 2015. Она используется для компилируется без ошибок в визуальной студии 2013.ошибки C2784, C2672 и C2664 в Visual Studio 2015

const std::basic_regex<wchar_t> e(_T("([eE][-+])(0)(\\d{2})")); 
io_string = std::regex_replace(io_string, e, _T("$1$3")); 

ошибка:

ошибка C2664: 'станд :: basic_regex> :: basic_regex (станд :: basic_regex> & &) noexcept': не удается преобразовать аргумент 1 из 'сопзЬ гольца [21]' к 'сопзЬ wchar_t *'

ошибка C2672: «станд :: regex_replace ': не соответствует перегруженной функции foun d 4>

ошибка C2784: «СТД :: basic_string < _Elem, СТД :: char_traits < _Elem>, станд :: Распределитель < _Other >> станд :: regex_replace (Const _Elem * Const станд :: basic_regex < _Elem, _RxTraits> &, Const _Elem *, СТД :: regex_constants :: match_flag_type) ': не может вывести аргумент шаблона для 'сопзЬ _Elem *' от 'станд :: string_t'

Я знаю, что этот вопрос исходит от изменения tchar.h. Любые предложения по их разрешению. Я также использую CMake для конфигурации проекта, а проект запускается на окнах 10.

+0

Если вы используете 'TCHAR' вместо' char_t' или отбрасываете '_T', он должен работать. –

ответ

0

Предполагая, что вы не хотите менять свой код, вам нужно убедиться, что ваш код построен для Unicode, поэтому передайте -D_UNICODE компилятору. This post suggests:

ADD_DEFINITIONS(-DUNICODE) 
ADD_DEFINITIONS(-D_UNICODE) 

this one И показано, как включить Unicode через графический интерфейс.

+0

Использование 'TCHAR' - ужасный совет. Почему вы предпочитаете, что над 'wchar_t'? Поддержка Windows 98? Потому что это единственная действительная причина. – rubenvb

+0

@rubenvb ОК, я удалил свой «ужасный совет», но я думал, что оставить возможность компиляции либо для одного байта, либо для двойного байта звучит. Я не делал Windows на века, так что однобайтовые текстовые строки эффективно устарели? –

+0

@ KenY-N Спасибо за ваш ответ, у меня есть аналогичная проблема для «no operator found, который принимает правый операнд типа const std :: basic_string », любая идея? (лучше ли задавать другой вопрос?) Меняющий компилятор меня сводит с ума. –

Смежные вопросы