15

我想用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。

4

2 回答 2

17

您使用的是 GCC 4.7.2,因此std::stoi受支持。您可以忽略 Eclipse 警告。它应该编译并运行良好。问题在于 Eclipse 编辑器,而不是 GCC。

(你只需要-std=c++11or -std=gnu++11[to also get the GCC extensions] 标志,顺便说一句。-std=c++0x只是一个已弃用的同义词。)

于 2012-11-19T12:29:13.400 回答
5

您可以摆脱日食中的红色曲线,(从这里):

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,因为您也在更新编译器。

于 2012-11-19T12:46:03.763 回答