2013-11-22 2 views
17

у меня есть:Cygwin г ++ станд :: стои «Ошибка: 'Стой' не является членом«станд

-cygwin 1.7.25 на окнах 7/32bit

-g ++ --version - > г ++ (GCC) 4.8.2

-libstdC++ а -> GCC-г ++ - 4.8.2-1

Пытался сделать C++ 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); 

Я искал в течение нескольких часов, но я до сих пор не удалось найти решение. В чем проблема?

+1

Странно. Он должен работать ... Кажется, это какая-то странная ошибка. – Ali

ответ

11

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

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

www.cplusplus.com/.../strtol

Аналогичная MinGW ошибка упоминается также here

std::stoi doesn't exist in g++ 4.6.1 on MinGW

+1

также имеет эту проблему с последней стабильной версией Cygwin, но с to_string –

+0

cygwin v4.9.2 Windows 7/64 все еще нет stoi, но strtol делает работу –

1

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

0

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

3

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

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

+0

Протестировано и работает с G ++ 4.9 на Debian. Хотя пользователю нужны решения для Windows –

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