我想用std::stoi
. 尽管我可以使用::atoi(str.c_str())
它,但如果可行的话,它会使代码更清晰。但 Eclipse 告诉我:
函数“stoi”无法解析
我检查过
- 包含标题
<string>
, - 包含路径设置正确,我可以使用
std::string
, - 编译器标志
-std=c++0x -std=c++11
也被设置。
stoi()
gcc 中丢失了,还是我的错?
我正在使用 gcc (Debian 4.7.2-4) 4.7.2。
您使用的是 GCC 4.7.2,因此std::stoi
受支持。您可以忽略 Eclipse 警告。它应该编译并运行良好。问题在于 Eclipse 编辑器,而不是 GCC。
(你只需要-std=c++11
or -std=gnu++11
[to also get the GCC extensions] 标志,顺便说一句。-std=c++0x
只是一个已弃用的同义词。)
您可以摆脱日食中的红色曲线,(从这里):
Project Properties->C/C++ General->Preprocessor Include Paths, Macros->[Providers] tab->your Built-in Compiler Settings provider(依赖于工具链)。单击“工作区设置”链接,进入“设置”属性页面,再次选择 [发现] 选项卡和您的提供商。有“获取编译器规格的命令”,在其中添加“-std=c++11”。
点击应用并关闭所有内容,然后索引->重建,你应该一切准备就绪。
或者,如果您的 eclipse 版本较旧,您可能只需要这样做:
Project->Properties->C/C++ Build->Discovery Options->GCC C++ Compiler
并将“-std=c++11”标志添加到那里的调用参数中。不过,这已“弃用”,因此您可能需要考虑更新 Eclipse,因为您也在更新编译器。