使用 while(1) 但不能打破 c++ 中的循环
Posted
技术标签:
【中文标题】使用 while(1) 但不能打破 c++ 中的循环【英文标题】:using while(1) but can't break the loop in c++ 【发布时间】:2017-07-06 05:22:20 【问题描述】:我正在尝试在getCommand
函数中使用while(1)
循环,但它会无限运行并且不会中断。我已经包含了HELP
函数,因为它在getCommand
函数中被调用。这是有问题的代码:
void HELP(string inCommand)
if (inCommand == "invLoad?")
cout << "This command allows the user to load in new inventory information into the report." << endl;
else if (inCommand == "invReport?")
cout << "This command allows the user to access an inventory report of a requested item." << endl;
else if (inCommand == "invPriceUpdate?")
cout << "This command allows the user to update the prices of a requested item." << endl;
//This is the function that acquires the SIMS command from the user
string getCommand()
string commandInput = "";
char quit = '.';
cout << "Please enter the command for the Simple Inventory Management System:" << endl <<
"invLoad, invReport, invPriceUpdate." << endl << endl;
cout << "To learn what each command does add a '?' at the end of the command input" << endl;
cin >> commandInput;
while (1)
if (commandInput == "invLoad")
return "invLoad";
else if (commandInput == "invReport")
return "invReport";
else if (commandInput == "invPriceUpdate")
return "invPriceUPdate";
else if (commandInput == "invLoad?")
HELP(commandInput);
else if (commandInput == "invPriceUpdate?")
HELP(commandInput);
else if (commandInput == "invReport?")
HELP(commandInput);
else
cout << "Please enter an appropriate command!" << endl;
switch (quit)
case 'y':
return 0;
break;
case 'n':
cout << "Enter another command" << endl;
不幸的是,while 循环无限运行,我不知道如何打破它。
【问题讨论】:
会无限运行,查看***.com/questions/24278724/… 您可以使用调试器来了解发生了什么。 尝试将 cin 指令放入循环中,让用户有机会在每个循环中更新 commandInput 值。 当然是无限运行。循环的内容不断检查相同的变量,希望它们的值会以某种方式神奇地自行改变。当然,C++ 不是这样工作的。while
循环内没有任何东西会改变变量中的值;因此,循环的每次迭代总是会得出相同的结果。
commandInput == "invReport"
这不是你比较两个字符串的方式。
【参考方案1】:
开关循环:不应该这样写。
输入“commandInput”是应该循环的
正确的说法是:switch(commandInput)
你已经给变量退出了一个值“。”这将导致编译器不进入循环,因为条件永远不会满足,因为您总是要求 commandInput 变量作为输入 因此,当您调试代码时,您实际上会发现没有进入循环,这就是为什么您的循环仍然是无限的
【讨论】:
以上是关于使用 while(1) 但不能打破 c++ 中的循环的主要内容,如果未能解决你的问题,请参考以下文章