Does libstdС++ не реализует std:: stoi? - программирование
Подтвердить что ты не робот

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.

4b9b3361

Ответ 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, так как вы обновляете свой компилятор.