libstdc ++不实现std :: stoi吗?

时间:2012-11-19 12:23:47

标签: c++ gcc c++11 std

我想使用std::stoi。虽然我可以使用::atoi(str.c_str()),但如果这样可以使代码更清晰。但Eclipse告诉我:

  

无法解析功能'stoi'

我查了一下

  • 包含标题<string>
  • 包含路径设置正确,因为我可以使用std::string
  • 也设置了编译器标志-std=c++0x -std=c++11

gcc中是否缺少stoi(),还是我的错?

我正在使用gcc(Debian 4.7.2-4)4.7.2。

2 个答案:

答案 0 :(得分:17)

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

(您只需要-std=c++11-std=gnu++11 [也可以获取GCC扩展名]标记,顺便说一句。-std=c++0x只是一个弃用的同义词。)

答案 1 :(得分:5)

你可以摆脱日食中的红色波浪,(来自here):

项目属性 - &gt; C / C ++ General-&gt;预处理器包含路径,宏 - &gt; [Providers]选项卡 - &gt;您的内置编译器设置提供程序(依赖于工具链)。 点击&#34;工作区设置&#34;链接,让你进入&#34;设置&#34;属性页面,再次选择[发现]选项卡和您的提供商。有&#34; Command来获取编译器规格&#34;,添加&#34; -std = c ++ 11&#34;在那里。

点击应用并关闭所有内容,然后索引 - &gt;重建,你应该全部设置。

或者,如果你的eclipse版本较旧,你可能只需要这样做:

项目 - &gt;属性 - &gt; C / C ++构建 - &gt;发现选项 - &gt; GCC C ++编译器

并添加&#34; -std = c ++ 11&#34;标记到那里的调用参数。这是&#34;已弃用&#34;但是,您可能还需要考虑更新Eclipse,因为您也在更新编译器。