C++ 如何使用C++;11标准::具有gcc的stoi?

C++ 如何使用C++;11标准::具有gcc的stoi?,c++,gcc,c++11,qt-creator,C++,Gcc,C++11,Qt Creator,可能重复: 我正在使用QtCreator2.5.0和GCC4.7(Debian4.7.2-4)。我在.pro文件中添加了“QMAKE_cxflags+=-std=c++11”。一切似乎都很好,我使用C++11 std::for_等。但当我包含“字符串”标题并希望使用stoi时,我得到了以下错误: performer.cpp:336: error: 'std::string' has no member named 'stoi' 我发现了一些与和一有关的问题,他们有自己的答案。但是我使用Lin

可能重复:

我正在使用QtCreator2.5.0和GCC4.7(Debian4.7.2-4)。我在.pro文件中添加了“QMAKE_cxflags+=-std=c++11”。一切似乎都很好,我使用C++11 std::for_等。但当我包含“字符串”标题并希望使用stoi时,我得到了以下错误:

performer.cpp:336: error: 'std::string' has no member named 'stoi'
我发现了一些与和一有关的问题,他们有自己的答案。但是我使用Linux,为什么它不在这里工作?

\include
#include <iostream>
#include <string>

int main()
{
    std::string test = "45";
    int myint = stoi(test);
    std::cout << myint << '\n';
}
#包括 int main() { std::string test=“45”; int-myint=stoi(测试);
std::cout
std::stoi
是命名空间范围内的函数,以字符串作为参数:

std::string s = "123";
int i = std::stoi(s);

从错误消息中,看起来您希望它是
string
的成员,作为
s.stoi()
调用(或者可能是
std::string::stoi
);事实并非如此。如果这不是问题所在,那么请发布有问题的代码,这样我们就不必猜测它出了什么问题。

您可以显示导致此错误的代码行吗?您是否正在尝试类似于
string.stoi(…)
?它应该是
std::stoi(string,…);
。你应该发布更多的代码:)@KillianDS,来吧..那篇文章只在“更新”的答案中提到stoi。它甚至没有给出一个例子。这个问题是关于如何使用它,是一个语法问题。@aldo.roman.nurena实际上这个问题的确切标题是关于如何使用
std::stoi
(更具体地说,你如何称呼它),答案就在那里。非常感谢。这似乎是一个相当愚蠢的问题,但无论如何,我希望它能帮助其他人以后不要问这个问题:当我用g++-std=c++11编译时,stoi不需要像上面的示例那样指定名称空间。cppreference.com列出了它已经在std名称空间中,但有与您发布的相同的示例有人怎么知道std名称空间的哪些成员不需要std限定条件?@Chad Skeeters:Without
using namespace std
std
名称空间的所有成员都需要
std
限定条件,除非它们可以通过参数相关名称查找(ADL)找到.ADL是此代码编译时不使用命名空间std
std::
的原因。这是一个相当广泛的主题,此注释的边距太窄,无法包含。搜索它,网上有很多信息。
std::string s = "123";
int i = std::stoi(s);