编辑:我试图通过点击编译器标志中的“让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;
}
答案 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)。