簡體   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