Does libstdС++ не реализует std:: stoi?
Я хочу использовать std::stoi
. Хотя я мог бы использовать ::atoi(str.c_str())
, это сделало бы код чище, если это сработает. Но Eclipse говорит мне:
Функция 'stoi' не может быть решена
Я проверил, что
- заголовок
<string>
включен,
- include paths установлены правильно, так как я могу использовать
std::string
,
- установлен флаг компилятора
-std=c++0x -std=c++11
.
Отсутствует stoi()
в gcc, или это как-то моя ошибка?
Я использую gcc (Debian 4.7.2-4) 4.7.2.
Ответы
Ответ 1
Вы используете GCC 4.7.2, поэтому std::stoi
поддерживается. Вы можете игнорировать предупреждение Eclipse. Он должен компилироваться и работать нормально. Проблема заключается в редакторе Eclipse, а не в GCC.
(Вам нужен только флаг -std=c++11
или -std=gnu++11
[также получить расширения GCC], btw. -std=c++0x
- это просто устаревший синоним.)
Ответ 2
Вы можете избавиться от красных squiggles в eclipse, (от здесь):
Свойства проекта → C/С++ Общие → Препроцессор Включить контуры, макросы → [Провайдеры] вкладки - ваш встроенный поставщик параметров компилятора (зависит от привязки программ).
Нажмите ссылку "Параметры рабочего пространства", которая приведет вас к странице свойств "Настройки", снова выберите вкладку "Открытие" и ваш провайдер. Существует "Команда для получения спецификаций компилятора", добавьте "-std = С++ 11".
hit применить и закрыть все, затем index- > rebuild и все должно быть установлено.
Или, если ваша версия eclipse старше, вы можете просто сделать это:
Project- > Properties- > C/С++ Build- > Параметры обнаружения- > Компилятор GCC С++
и добавьте флаг "-std = С++ 11" в аргументы вызова. Тем не менее, это "устарело", поэтому вы можете захотеть обновить Eclipse, так как вы обновляете свой компилятор.