[英]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);
要控制循环,请使用continue
和break
关键字。 关键字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.