I want to use std::stoi
. Although I could use ::atoi(str.c_str())
it would make the code cleaner if this would work. But Eclipse tells me:
Function 'stoi' could not be resolved
I checked that
- the header
<string>
is included,
- include paths are set correctly, as I can use
std::string
,
- the compiler flag
-std=c++0x -std=c++11
is set too.
Is stoi()
missing in gcc, or is it somehow my fault?
I am using gcc (Debian 4.7.2-4) 4.7.2.
You're using GCC 4.7.2, so std::stoi
is supported. You can ignore the Eclipse warning. It should compile and run fine. The problem is with the Eclipse editor, not with GCC.
(You only need the -std=c++11
or -std=gnu++11
[to also get the GCC extensions] flag, btw. -std=c++0x
is just a deprecated synonym.)
You can get rid of the red squiggles in eclipse, (from here):
Project Properties->C/C++ General->Preprocessor Include Paths, Macros->[Providers] tab->your Built-in Compiler Settings provider (toolchain dependent).
Click on "Workspace Settings" link which gets you to "Settings" property page, select [Discovery] tab and your provider again. There is "Command to get compiler specs", add "-std=c++11" in there.
hit apply and close everything, then index->rebuild and you should be all set.
Or, if your version of eclipse is older, you might just have to do this:
Project->Properties->C/C++ Build->Discovery Options->GCC C++ Compiler
and add the "-std=c++11" flag to the invocation arguments there. This is "deprecated" though, so you may want to consider updating Eclipse since you're updating your compiler too.