Подтвердить что ты не робот

Cygwin g++ std:: stoi "error: 'stoi не является членом' std

У меня есть:

-cygwin 1.7.25 на windows 7/32bit

-g++ --version → g++ (GCC) 4.8.2

-libstdС++. a → gcc-g++ - 4.8.2-1

Попробовал сделать С++ Hello World:

#include <string>

int main() 
{
   std::string s = "123";
   int i = std::stoi(s);
}

компиляция дает:

$ g++ -std=c++11 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:6:10: error: ‘stoi’ is not a member of ‘std’
  int i = std::stoi(s);

Я искал часы, но я все еще не мог найти решение. В чем проблема?

4b9b3361

Ответ 1

Это ошибка, возможно, неполный порт некоторого кода библиотеки для cygwin (это функция cplusplus11) - некоторые вещи должны быть изменены в конце концов. Обязательно сообщите об этом.

Решение легко, конечно: #include <cstdlib> strtol(s.c_str(),0,10);

www.cplusplus.com/.../strtol

Аналогичная ошибка mingw упоминается также здесь

std:: stoi не существует в g ​​++ 4.6.1 на MinGW

Ответ 2

У меня такая же проблема вчера. "error: 'stoi' не является членом 'std'.

Сначала я убедился, что С++ 11 включен. Затем я обновил компилятор g++ до последней версии. После этого эта ошибка исчезла.

Ответ 3

Компилятор не воспринимается всерьез. В Windows лучше всего использовать визуальную студию, так как она всегда обновляется. Ошибка здесь в том, что макрос defs неправильный для начала. Проблема начинается с iomanip.h и iosbase. Поэтому они должны были бы изменить весь код. Для этого есть пользовательские исправления, но я бы не стал им доверять, поскольку они могут содержать еще больше ошибок, чем исходные копии. Но это зависит от вас, я просто придерживаюсь визуальной студии экспресс-издания.

Ответ 4

stoi работает только для mingw64 для меня. Если вы используете Codeblocks, не забудьте проверить, установлен ли ваш компилятор проектов в mingw64.