Разве libstdc ++ не реализует std :: stoi?

Я хочу использовать std::stoi, Хотя я мог бы использовать ::atoi(str.c_str()) это сделало бы код чище, если бы это работало. Но Затмение говорит мне:

Функция ‘Stoi’ не может быть решена

Я проверил это

  • заголовок <string> Включено,
  • включенные пути установлены правильно, так как я могу использовать std::string,
  • флаг компилятора -std=c++0x -std=c++11 тоже установлено.

Является stoi() отсутствует в gcc, или это как-то моя вина?

Я использую gcc (Debian 4.7.2-4) 4.7.2.

15

Решение

Вы используете GCC 4.7.2, поэтому std::stoi поддерживается. Вы можете игнорировать предупреждение Eclipse. Он должен скомпилироваться и работать нормально. Проблема в редакторе Eclipse, а не в GCC.

(Вам нужно только -std=c++11 или же -std=gnu++11 [также получить расширения GCC], кстати. -std=c++0x это просто устаревший синоним.)

17

Другие решения

Вы можете избавиться от красных загогулинов в затмении, (из Вот):

Свойства проекта-> Общие сведения о C / C ++ -> Включение путей в препроцессор, Макросы -> вкладка [Поставщики] -> поставщик настроек встроенного компилятора (зависит от цепочки инструментов).
Нажмите на ссылку «Настройки рабочего пространства», чтобы перейти на страницу свойств «Настройки», снова выберите вкладку [Обнаружение] и своего провайдера. Есть «Команда для получения спецификаций компилятора», добавьте туда «-std = c ++ 11».

нажмите применить и закройте все, затем index-> ​​rebuild и у вас все будет готово.

Или, если ваша версия Eclipse старше, возможно, вам просто нужно сделать это:

Проект-> Свойства-> Сборка C / C ++-> Параметры обнаружения-> Компилятор GCC C ++

и добавьте флаг «-std = c ++ 11» к аргументам вызова там. Это «не рекомендуется», поэтому вы можете рассмотреть возможность обновления Eclipse, так как вы также обновляете свой компилятор.

5

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector