Stoi未在范围中声明 - Code :: blocks

时间:2015-12-12 19:17:15

标签: c++ c++11

编辑:我试图通过点击编译器标志中的“让g ++遵循C ++ 11 ISO C ++语言标准”来告诉它使用C ++ 11。

我的stoi未在范围内声明,我已将c ++ 11添加到Code::Blocks;我在设置中添加了兼容性 - >编译器 - >编译器标志,但它仍然一直给我这个错误。

当我尝试做atoi或strtol时,我收到以下错误:

  

C:\ Users \ user \ Desktop \ Programming \ NewProject \ main.cpp | 19 |错误:不能   将'std :: string {aka std :: basic_string}'转换为'const char *'   参数'1'到'long int strtol(const char *,char **,int)'|

我的代码:

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <cstdlib>

using namespace std;

int main()
{

    string numberGuessed;
    int numberGuessedint = 0;

    do {

        cout << "Guess a number between 1 and 10: ";
        getline(cin, numberGuessed);
        numberGuessedint = stoi(numberGuessed);
        cout << numberGuessedint << endl;


    } while(numberGuessedint != 4);

    cout << "You win!" << endl;

    return 0;

}

3 个答案:

答案 0 :(得分:4)

这是与Code :: Blocks捆绑在一起的MinGW中的一个已知错误。

您可以应用补丁:http://tehsausage.com/mingw-to-string

或者下载MinGW的新版本(最好有线程支持,因为你也缺少它)并替换你现在拥有的版本。

答案 1 :(得分:1)

要使用atoi,您需要:

        numberGuessedint = atoi(numberGuessed.c_str());

答案 2 :(得分:0)

我正在写一个对我有用的解决方案。正如我在堆栈溢出中发布的大多数解决方案中所发现的那样,早期版本的代码块包含一个错误。因此,我从代码块网站上删除了旧的代码块版本并安装了新版本17.12。

然后,我在编译器标志中单击“使g ++遵循C ++ 11 ISO C ++语言标准”。

设置->编译器->编译器标志。

它对我有用(我正在使用Windows 7)。