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

Я получаю сообщение об ошибке «Stoi не является членом std», когда я пытаюсь использовать std :: stoi и скомпилировать его. Я использую g ++ 4.7.2 из командной строки, поэтому это не может быть ошибка IDE, у меня есть все мои включения по порядку, и g ++ 4.7.2 по умолчанию использует c ++ 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;
}

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

11

Решение

std::stoi() новый в C ++ 11 поэтому вы должны убедиться, что вы скомпилировали его:

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

или же

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

Другие решения

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

#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;
}
4