繁体   English   中英

结束一个while循环,继续询问字符串输入,直到我输入-1

[英]End a while loop that continue ask for string input until I enter -1

我必须创建一个包含项目名称的菜单,我可以使用for循环结束直到达到最大值,但是如何使用while循环继续询问,直到达到最大值或我输入-1

我尝试使用for循环并且它工作,但我必须使用while循环,当我告诉它停止时可以停止。

#include <iostream>

using namespace std;

void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
                  int MAX_MENU_ITEMS);

int main()
{
    const int MAX_MENU_ITEMS = 5;
    char menu_list[MAX_MENU_ITEMS][50];
    float price_list[MAX_MENU_ITEMS];
    int num_menu_items;

    read_in_menu(menu_list, price_list, num_menu_item, MAX_MENU_ITEMS);
}

void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
                  int MAX_MENU_ITEMS)
{
    for (int i = 0; i < MAX_MENU_ITEMS; i++)
    {
        cout << "Enter Names: ";
        cin.getline(menu_list[i], 20);
    }
}

我想使用while循环,直到我输入-1或达到最大值。 我想在我想要的时候停止while循环而不是for循环,我必须达到最大值。

无论何时想要退出循环,都可以使用break关键字。

for(int i = 0; i < MAX; i++){
    if(i > 10){
        break;
    }
    doWork();
}

您可以将循环转换for其他循环。 例如:

对于

for(int i = 0; i < 10; i++)
    DoSomething();

int i = 0;
while(i < 10){
    DoSomething();
    i++;
}

这样做,而

int i = 0;
do{
    DoSomething();
    i++;
}
while(i < 10);

要控制循环,请使用continuebreak关键字。 关键字continue将跳过循环的当前迭代, break将退出循环。 这些通常以if语句为条件。

如果我理解正确,这样的事情应该有效:

int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS || input == "-1") {
    cout << "Enter Names: ";
    cin.getline(input, 20);
    if(input != "-1") { //to avoid setting menu_list[i] = "-1"
        menu_list[i] = input;
    }
    MAX_MENU_ITEMS++;
}

或使用休息:

int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS) {
    cout << "Enter Names: ";
    cin.getline(input, 20);
    if(input == "-1") { 
        break;
    }
    menu_list[i] = input;
    MAX_MENU_ITEMS++;
}

我能用指针lol得到它。

void read_in_menu(char menu_list[5][20], float price_list[], int &num_menu_items, int MAX_MENU_ITEMS){
int i = 0;
char *p = "-1";
while(i<MAX_MENU_ITEMS){
cout << "Enter Name" << endl;
cin.getline(menu_list[i],20);
if(strcmp(menu_list[i], p)){
i++;
}else{
break;
}
}
}

暂无
暂无

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

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