Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ .cpp:23:错误:无法转换‘;std::string’;至‘;常量字符*’;对于参数‘;1’;至‘;int atoi(常量字符*)和#x2019;_C++_String - Fatal编程技术网

C++ .cpp:23:错误:无法转换‘;std::string’;至‘;常量字符*’;对于参数‘;1’;至‘;int atoi(常量字符*)和#x2019;

C++ .cpp:23:错误:无法转换‘;std::string’;至‘;常量字符*’;对于参数‘;1’;至‘;int atoi(常量字符*)和#x2019;,c++,string,C++,String,这里是我试图运行的基本代码,但我在使用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(){

这里是我试图运行的基本代码,但我在使用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;
}
使用名称空间std;
int main(){
使用的字符串编号;
int intnumberguesed=0;
做{

CUT

使用<代码> STOI,这是C的C++版本的代码> ATOI


更新

由于上述问题的原始答案文本被修改为以下错误消息:

假设该错误是由g++(使用该措辞)产生的,则可能有两种不同的原因:

  • 使用不符合要求的g++变体,该变体不提供
    std::stoi

  • 在C++03模式下使用g++(
    stoi
    是在C++11中引入的)

对于Windows,已知MinGW-w64变体提供了
std::stoi
,尤其是Nuwen发行版基于MinGW-w64


< C++ > 11模式,G++使用选项<代码> -STD= C++ 11 。例如,这是Nuwen分布G++版本5.1所必需的。

< P>使用<代码> STOI,这是C的C++版本的代码> ATOI


更新

由于上述问题的原始答案文本被修改为以下错误消息:

假设该错误是由g++(使用该措辞)产生的,则可能有两种不同的原因:

  • 使用不符合要求的g++变体,该变体不提供
    std::stoi

  • 在C++03模式下使用g++(
    stoi
    是在C++11中引入的)

对于Windows,已知MinGW-w64变体提供了
std::stoi
,尤其是Nuwen发行版基于MinGW-w64

对于C++11模式,在g++中使用选项
-std=C++11
。例如,这在Nuwen发行版g++5.1中是必需的。

函数接受
const char*
参数,但您试图传递它
std::string
。像
intnumberguesed=atoi(numberguesed.Cèstr())那样编写它;
获取指针

至于第一个错误,关于未声明的
stoi()
,这是因为该函数是在C++11标准中添加的,因此您必须在编译器中启用它的支持。例如,在较旧版本的GCC中,您可以使用
-std=C++11
选项(默认情况下启用,并且自gcc6默认情况下启用)。

函数接受
const char*
参数,但您试图传递它
std::string
。像
intnumberguesed=atoi(numberguesed.c_str())一样编写它;
以获取指针


至于第一个错误,关于未声明的
stoi()
,这是因为该函数是在C++11标准中添加的,因此您必须在编译器中启用它的支持。例如,在较旧版本的GCC中,您可以使用
-std=C++11
选项(默认情况下启用,并且自gcc6默认情况下启用)。

使用例如
atoi(numberguesed.c_str());
std::stoi
要求您
#包括
,但它也需要一个现代的(与c++11兼容的)编译器——请参见。
atoi
需要一个c字符串,您可以使用
numberguesed.c_str()
只需使用intnumberguesed=atoi(numberguesed.data())注意:原始的MinGW没有
stoi
to_字符串
,但是MinGW-w64没有使用例如
atoi(numberguesed.c_str());
std::stoi
要求您
#包括
,但它还需要一个现代的(与c++11兼容的)编译器--请参阅。
atoi
需要一个c字符串,您可以使用
numberguesed.c_str()
获得它,只需使用intnumberguesed=atoi(numberguesed.data()),就可以了。注意:原始的MinGW没有
stoi
to_string
,但是MinGW-w64没有(由于默认情况下启用了gcc5 C11,并且默认情况下启用了gcc6 C++11)”,这取决于发行版。对于Nuwen,C++11是一个4.x版本的默认值,然后它恢复为C++03作为默认值,而对于版本5.1.Re,仍然是C++03(因为默认情况下启用了gcc5 C11,并且默认情况下启用了gcc6 C++11),这取决于发行版。在Nuwen中,C++11是一个4.x版本的默认值,然后它恢复为C++03作为默认值,在5.1版本中仍然是C++03。非常感谢您的帮助!我尝试使用“g++-std=C++11 myprogram.cpp”,但想出了命令“-std=C++11”找不到…我正在使用OSX 10.6.8上带有xcode 4.2的终端,这可能就是为什么“intNumberGuessed=atoi(numberGuessed.c_str());”修复了它。从现在起我将使用这种格式!非常感谢你们的帮助!你们真是难以置信!比你们的帮助更感谢!我尝试使用了“g++-std=c++11 myprogram.cpp”但是我想到了命令“-std=c++11”没有找到…我正在使用OSX 10.6.8上的终端和xcode 4.2,这可能就是为什么…intnumberguesed=atoi(numberguesed.c_str());”修复了它。从现在开始我将使用这种格式!非常感谢你们的帮助!你们真是难以置信!
‘stoi’ was not declared in this scope