2015-05-28 3 views
1

Я создал общий объект для Android в Visual Studio 2015.Использование -std = C++ 11 на VS2015

Он отлично работает до сих пор, но pop_back() для wstring не работает:

 wstring element = "JustATest!"; 
     if (element.back() == L'!') 
     { 
      element.pop_back(); 
     } 

VS2015 говорит мне: "no member named 'pop_back' in 'std::basic_string<wchar_t>'".

Может ли кто-нибудь сказать мне, как избавиться от этой ошибки? Я понятия не имею, почему это не должно работать. Это потому, что почему-то VS2015 не использует C++11 здесь?

Благодарим за помощь!

Edit: Еще одна ошибка:

Когда я пытаюсь использовать _wtoi, VS говорит мне: «Использование необъявленной идентификатора '_wtoi' Очень очень странно

+0

В соответствии с MSDN он: https://msdn.microsoft.com/en-us/library/ee404847 (v = vs.140) .aspx – Steve

+0

@Steve Да, я так и думал. Но, похоже, это пока не работает. – tmighty

+0

Я просто попробовал его в VS2013, и он отлично работал. Я просто скопировал и вставил ваш код выше в 'main()'. Однако мне пришлось сделать одно небольшое изменение, чтобы заставить его скомпилировать, поставить и «L» перед строковой константой: 'wstring element = L" JustATest! ";' Я предполагаю, что у вас '#include '? – Steve

ответ

1

Вам необходимо включить поддержку STL... Включите STL с настройками конфигурации -> Общие -> Использование STL. Хорошими параметрами являются статическая библиотека LLVM libC++ (меньше функций, более совместимая с CLANG) и статическая библиотека GNU STL (больше функций, у меня была проблема, которая требовала от меня Оптимизатор CLANG для -Oz для предотвращения segfault).

+0

Спасибо, я никогда не замечал этот вариант. Когда я меняю библиотеку, я вижу, что некоторые параметры wstring работают, а некоторые другие - нет. То же самое касается _wtoi и _wtof. Однако нет библиотеки, которая позволяла бы мне одновременно использовать wstring.pop_back и _wtoi. Вы знаете, почему это так? Является ли он все еще кровоточащим краем и может быть исправлен в следующем месяце или мне нужно его обойти, потому что он не будет исправлен? – tmighty

+1

_wtoi зависит от платформы, где платформа - это окна, а не андроид/linux. Я не ожидаю, что _wtoi будет перенесен на все, что совместимо с Android. Существуют различные варианты тупика, но лучший (то есть он работает), я нашел, это использовать boost :: lexical_cast <>. [link] (http://stackoverflow.com/questions/5118308/how-to-convert-stdwstring-to-numeric-typeint-long-float) Конечно, это означает, что вам нужно включить соответствующие файлы заголовков boost в ваш проект. –

+0

Разве это не сумасшествие, что у меня есть специальная библиотека, чтобы преобразовать wstring в значение int? Другого пути нет, не так ли? – tmighty

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

  • Нет связанных вопросов^_^