繁体   English   中英

C++ do-while 循环

[英]C++ do-while loop

伙计们! 我正在用 C++ 编写一个程序来演示“do-while”循环。 只要不是“再见”,程序就会简单地回应用户输入的任何内容。 因此,如果用户输入“嘿”,程序会回显“嘿”,如果用户输入“再见”,程序将停止。 这是代码:

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

int main()
{ 
string wordString;

do
{
    cout << "\nEnter a word: ";
    getline(cin, wordString);
    cout << "\nYou entered: " << wordString<<"\n";
} while ((wordString!="goodbye")||(wordString!="Goodbye"));

return 0;
} 

我想要做的是让程序在用户输入“再见”或“再见”时停止。 所以我加了 || 检查但它不起作用,循环语句只是继续执行。 但是当我把 && 而不是 || 它工作正常,只要输入“再见”或“再见”,程序就会停止。

所以我的问题是:为什么 && 工作和 || 不是吗?

使用|| 不会停止程序,因为它是 OR 运算符,这意味着当语句中的任何一个为真时它将为真,因此如果任何一个为真,那么它将在 AND( && ) 运算符中执行,这意味着这两个语句必须为真才能执行。

您必须使用logical and &&or || 因为如果只有wordstring不等于 ro "goodbye" 且不等于 "GOODBYE",你想打破循环:

while( wordString != "goodbye") && (wordString != "Goodbye");

或者你可以使用OR || 这边走:

while(wordString == "goodbye" || wordString == "Goodbye");

如您所见,如果wordString包含"goodbye""GOODBYE"则 OR 中断。 如果两个操作数都为零,则逻辑 OR 返回真,如果两个操作数都为零,则返回假。 逻辑与“&&”仅当两个操作数不为零时返回真,否则返回假 (0)。

如果用户输入"Goodbye" ,我可以看到什么; 大写的第一个字符或任何大小写字母的混合然后你会编程看起来很荒谬; 因为它不会破裂。

解决方法是您可以将输入文本转换为全部大写或小写字母,然后仅检查一个值:

std::string wordString = "GoodBye";
for(int i(0); i < wordString.length(); i++)
    wordString[i] = to_upper(wordString[i]);

// wordString = "GOODBYE"

 // ....
 while(wordString != "GOODBYE");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM