gpt4 book ai didi

c++ - 在控制台中获取是/否总是失败

转载 作者:行者123 更新时间:2023-11-27 22:52:23 27 4
gpt4 key购买 nike

我正在尝试制作一个可以反复运行的程序,前提是用户每次都同意。不幸的是,当我输入是或否时它似乎无法识别,并且总是默认“再来一次?”信息。这是我用来从控制台获取输入的代码:

bool getYN(){
bool confirmed = 0;
bool answer = 0;
string input;
while(!confirmed){
getline(cin, input, '\n');
transform(input.begin(), input.end(), input.begin(), toupper);

if(input.c_str() == "Y" || input.c_str() == "YES"){ //If the user says yes
confirmed = 1;
answer = 1;
} else if(input.c_str() == "N" || input.c_str() == "NO"){ //If the user says no
confirmed = 1;
answer = 0;
} else { //If the user says something else entirely
printf("\nCome again? (Y/N) ");
};
};
return answer;
};

我已经包括了<string><algorithm> .出于某种原因,当我输入它们时,它总是表现得好像没有得到 y/yes 或 n/no。它只是一直要求我再次回答。

最佳答案

if(input.c_str() == "Y" || input.c_str() == "YES"){ //If the user says yes
confirmed = 1;
answer = 1;
} else if(input.c_str() == "N" || input.c_str() == "NO"){ //If the user says no
confirmed = 1;
answer = 0;
}

你不应该像这样进行 C 字符串比较。您正在获取 char 的地址并与文本分配对象的地址进行比较。当然,比较将返回 false。

对于 C++ 字符串,简单的 operator== 比较是有效的:

if(input == "Y" || input == "YES"){ //If the user says yes
confirmed = 1;
answer = 1;
} else if(input == "N" || input == "NO"){ //If the user says no
confirmed = 1;
answer = 0;
}

关于c++ - 在控制台中获取是/否总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com