Std:: stoi отсутствует в g ​​++ 4.7.2?

Я получаю сообщение об ошибке: "stoi не является членом std", когда я пытаюсь использовать std:: stoi и пытаюсь его скомпилировать. Я использую g++ 4.7.2 из командной строки, поэтому он не может быть IDE-ошибкой, у меня есть все мои заказы, и g++ 4.7.2 по умолчанию использует С++ 11. Если это помогает, моя ОС - Ubuntu 12.10. Есть ли что-то, что я не настроил?

#include <iostream>
#include <string>

using namespace std;

int main(){
  string theAnswer = "42";
  int ans = std::stoi(theAnswer, 0, 10);

  cout << "The answer to everything is " << ans << endl;
}

Не компилируется. Но в этом нет ничего плохого.

Ответ 1

std::stoi() является новым в С++ 11, поэтому вам нужно скомпилировать его с помощью:

g++ -std=c++11 example.cpp

или

g++ -std=c++0x example.cpp

Ответ 2

Для более старой версии компилятора С++ не поддерживается stoi. для более старой версии вы можете использовать следующий фрагмент кода для преобразования строки в целое число.

#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;

int main() {
    string input;
    cin >> input;
    int s = std::atoi(input.c_str());
    cout<<s<<endl;
    return 0;
}