std::stoi missing in g++ 4.7.2?
19,870
Solution 1
std::stoi()
is new in C++11 so you have to make sure you compile it with:
g++ -std=c++11 example.cpp
or
g++ -std=c++0x example.cpp
Solution 2
For older version of C++ compiler does not support stoi. for the older version you can use the following code snippet to convert a string to integer.
#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;
}
Comments
-
AerosolSP almost 2 years
I get the error message "stoi is not a member of std" when I try to use std::stoi and try to compile it. I'm using g++ 4.7.2 from the command line so it can't be IDE error, I have all my includes in order, and g++4.7.2 defaults to using c++11. If it helps, my OS is Ubuntu 12.10. Is there something I haven't configured?
#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; }
Will not compile. But there's nothing wrong with it.
-
AerosolSP about 11 yearsDoes not work either. Besides, -std=c++11 appears to be enabled by default. One of my compiler warnings for the code I'm working on says as much (note, the code above simply tells me the stoi is not a member of stoi,so the problem isn't with my code).
-
CanadaRox about 11 yearsI saved your code as example.cpp and tried:
g++ example.cpp
and got the error you mentioned. When I added either-std=c++11
or-std=c++0x
it compiles and runs just fine. The g++ man page on my laptop says that gnu++98 is the default dialect for C++. -
AerosolSP about 11 yearsScratch all that. Now I know why it wasn't working. The flag has to be set before you specify the filename of the source code to be compiled...wasn't aware of that and I didn't see anything that pointed that fact out anywhere. Case closed.
-
CanadaRox about 11 yearsThat is news to me as well, glad you got it sorted out!
-
Rapnar almost 8 yearsgot error: ‘atoi’ is not a member of ‘std’ with "g++ -std=c++98"
-
Mohsin over 7 yearswhat do you mean by 'flag has to be set"??? what flag? im stuck on a similar problem