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::coutstd::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:Withoutusing namespace std
,std
名称空间的所有成员都需要std
限定条件,除非它们可以通过参数相关名称查找(ADL)找到.ADL是此代码编译时不使用命名空间std和std::
的原因。这是一个相当广泛的主题,此注释的边距太窄,无法包含。搜索它,网上有很多信息。
std::string s = "123";
int i = std::stoi(s);