gpt4 book ai didi

c++ - std::stoi 不被 eclipse 识别

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:44 24 4
gpt4 key购买 nike

在我的系统上,运行 Windows 7 x64、Eclipse Luna 和 g++ 4.9.2(通过 cygwin 安装),std::stoi 似乎从未被 g++ 声明。根据文档,stoi 是字符串库的一部分,所以显然我有 #include <string> .

此外,我知道 stoi 是在 C++11 中引入的,并且我已经为我的编译器 (g++) 设置了适当的标志,尽管这看起来像是一个 IDE 错误,而不是编译器错误。

在构建我的项目时,我仍然会收到以下错误消息之一:

error: 'stoi' is not a member of 'std'
error: Function 'stoi' could not be resolved

我该如何解决这个问题?如何让 Eclipse 识别 stoi?

最佳答案

这需要大量挖掘,但显然,声明 stoi 的代码位于 <basic_string.h> 中。 ,它看起来像这样:

#if (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99) \
&& !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF))
#include <ext/string_conversions.h>
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// 21.4 Numeric Conversions [string.conversions].
inline int
stoi(const string& __str, size_t* __idx = 0, int __base = 10)
{ return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
__idx, __base); }

所以,很容易看出为了拥有 std::stoi可用,必须确保以下几点:

  • __GXX_EXPERIMENTAL_CXX_0X__已定义。
  • _GLIBCXX_USE_C99已定义。
  • _GLIBCXX_HAVE_BROKEN_VSWPRINTF 定义。

现在,在 Eclipse 中,如果您打开了自动完成功能,检查这些并设置它们就非常容易了!

检查:只需在代码中的任意位置开始键入它们,换行,然后查看自动完成(通常是 CTRL+Space)是否提示它们。如果是这样 - 他们被定义了。如果不是,请继续阅读。

定义也很容易!导航到:项目 -> 属性 -> C/C++ 常规 -> 路径和符号 -> 符号选项卡

从左侧的选项列表中单击GNU C++,然后单击添加,并简单地提供所需的名称。

单击确定并关闭属性窗口,在添加所需的定义后,通过导航到 *Project -> C/C++ Index -> Rebuild 重建索引器。强>.

附言当你这样做时,你可能还想定义以下符号: __cplusplus具有值(value) 201103L .

(这将有助于设置各种其他选项,例如 std::unordered_set)。

关于c++ - std::stoi 不被 eclipse 识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32309095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com