如何在gcc中使用C ++ 11 std :: stoi?

时间:2012-11-27 17:40:05

标签: c++ gcc c++11 qt-creator

  

可能重复:
  How to convert a number to string and vice versa in C++

我正在使用Qt Creator 2.5.0 和gcc 4.7(Debian 4.7.2 -4)。我在.pro文件中添加了“QMAKE_CXXFLAGS + = -std = c ++ 11”。一切似乎都没问题,我使用了C ++ 11 std :: for_each等等。但当我包含“字符串”标题并想使用stoi时,我收到以下错误:

performer.cpp:336: error: 'std::string' has no member named 'stoi'

我发现了一些与MinGW和一个moreEclipse CDT相关的问题,他们得到了答案。但我使用Linux,为什么它不在这里工作?

2 个答案:

答案 0 :(得分:4)

#include <iostream>
#include <string>

int main()
{
    std::string test = "45";
    int myint = stoi(test);
    std::cout << myint << '\n';
}

#include <iostream>
#include <string>

using namespace std    

int main()
{
    string test = "45";
    int myint = stoi(test);
    cout << myint << '\n';
}

查看http://en.cppreference.com/w/cpp/string/basic_string/stol

答案 1 :(得分:2)

std::stoi是命名空间范围内的函数,以字符串作为参数:

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

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