在 while 循环中使用字符串(OR 运算符)
Using a string in a while loop (OR operator)
我正在研究一些初学者项目,其中一个是创建一个只问候两个特定名称(爱丽丝和鲍勃(的程序。我认为最好的方法是使用 while 循环,所以只要名称不等于 Bob 或 Alice,它就会不断提示用户输入正确的名称。但是,程序会在 while 循环中打印输出,即使是鲍勃或爱丽丝!我需要一些帮助来纠正这个问题。提前非常感谢。
#include <iostream>
#include <string>
int main()
{
std::cout << "Please enter the correct name(s): ";
std::string name = " ";
std::cin >> name;
while (name != "Alice" || name!= "Bob")
{
std::cout << "Please enter the correct name(s): ";
std::cin >> name;
}
if (name == "Alice")
std::cout << "Hi Alice!" << std::endl;
if (name == "Bob")
std::cout << "Hi Bob!" << std::endl;
}
首先,欢迎来到C++世界!现在,让我们继续讨论您的问题。如果你看看这行,
while (name != "Alice" || name!= "Bob")
正如其他人所说,这包含了问题。你基本上是在说:
while (the name is NOT "Alice" OR the name is NOT "Bob")
名称不能同时是两件事。为了达到这种情况,你的名字必须是鲍勃·爱丽丝或爱丽丝·鲍勃。如果您查看以下代码行
std::cin >> name;
这是不可能的。计算机只接受一个单词。条件永远不会打。为了解决此问题,您应该执行以下操作:
while (name != "Alice" && name != "Bob")
这将解决问题。此外,如果要改进代码,可以执行以下操作:
#include <iostream>
#include <string>
int main()
{
std::string name = "";
std::cout << "Please enter the correct name: ";
std::cin >> name;
while (name != "Alice" && name != "Bob")
{
std::cout << "Please enter the correct name: ";
std::cin >> name;
}
std::cout << "Hi " << name << "!" << endl;
相关文章:
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- C++重载|(按位OR)运算符,返回常数值
- 在 while 循环中使用字符串(OR 运算符)
- 按位 OR 运算符
- 带有逻辑 OR 运算符的 if 条件的缩写?
- C++ OR 运算符的未知行为
- 将逻辑 OR 与 cout 运算符一起使用
- 使用 OR 运算符赋值
- 我可以在regex中使用带有or运算符的前瞻性断言吗
- 在 C++ 中对字符串使用 OR 运算符
- 我在C++中使用删除运算符时遇到问题。我在运行时不断收到"double free or corruption (fasttop)"错误
- 逻辑 OR 和逗号运算符是否等效?
- 如果两者都会给出相同的结果,我应该更喜欢加法或逻辑 OR 运算符吗?
- 由于某种原因,使用 OR 运算符执行操作不起作用
- 我是否正确地将枚举值与C++的"or"运算符进行比较?
- 按位 AND/OR 运算符正在追加
- 为什么在c++中不应重载逗号、地址、逻辑AND和逻辑OR运算符
- "Or"运算符如何工作?(C++)
- "if"语句"or"运算符不起作用
- 使用 OR 运算符将多个 for 循环合并为一个