这是我尝试运行的基本代码但是我遇到了stoi问题(它的c ++)我一直收到错误:
‘stoi’ was not declared in this scope
我尝试了atoi和strtol这个错误
.cpp:23: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’
代码:
using namespace std;
int main(){
string numberGuessed;
int intNumberGuessed = 0;
do {
cout << "Guess a numeber btw 1 - 10: " << endl;
getline(cin, numberGuessed);
intNumberGuessed = atoi(numberGuessed);
cout << intNumberGuessed << endl;
} while(intNumberGuessed != 4);
cout<< "you win" << endl;
return 0;
}
答案 0 :(得分:7)
atoi()
函数接受const char*
参数,但您尝试将其传递给std::string
。把它写成intNumberGuessed = atoi(numberGuessed.c_str());
来取指针。
至于第一个错误,关于stoi()
未声明 - 这是因为该函数是在C ++ 11标准中添加的,因此您必须在编译器中启用它的支持。即在较旧版本的GCC中,您可以使用-std=c++11
选项(默认情况下启用since gcc5 C11 is,并且默认情况下为gcc6 C++11 will be enabled)。
答案 1 :(得分:3)
使用stoi
,它是C&#39 {s} atoi
的现代C ++版本。
<强>更新强>:
由于问题上方的原始答案文本已修改,并显示以下错误消息:
‘stoi’ was not declared in this scope
假设这个错误是由g ++(使用该措辞)产生的,这可能有两个不同的原因:
使用不符合{+ 1}}提供的g +的不符合变体。
在C ++ 03模式下使用g ++(在{+ C> 11中引入了std::stoi
)。
对于Windows,已知MinGW-w64变体提供stoi
,特别是Nuwen分发基于MinGW-w64。
对于C ++ 11模式,使用g ++选项std::stoi
。例如,对于Nuwen distribution g ++ version 5.1,这是必要的。