C++ 为什么while中的系统(“CLS”)不工作?
我想在选择选项后清除屏幕,但不知何故它不起作用。它将在显示功能中显示物品,并创建新的购买和其他物品。这是因为在while循环中C++ 为什么while中的系统(“CLS”)不工作?,c++,windows,C++,Windows,我想在选择选项后清除屏幕,但不知何故它不起作用。它将在显示功能中显示物品,并创建新的购买和其他物品。这是因为在while循环中 while (selection != -1) // While for create new purchase { cout << "Create New Purhcase" << endl << endl; cout << "1. Display Ite
while (selection != -1) // While for create new purchase
{
cout << "Create New Purhcase" << endl << endl;
cout << "1. Display Item" << endl;
cout << "2. Create a New Purchase" << endl << endl <<endl;
cout << "0. Back to Main Menu" << endl;
cout << "Enter Option:";
cin >> selection;
//Back to main menu
if (selection == 0)
{
system("CLS");
break;
}
if (selection == 1)
{
system("CLS");
cout << "Display Menu" << endl;
Display();
}
void Display()
{
system("CLS");
temp = itemHead; //start at the first node
cout << "Dispaly Menu" << endl << endl;
while (temp != NULL)
{
cout << "ID:" << temp->itemid << endl;
cout << "Item Name:" << temp->name << endl;
cout << "Item Type:" << temp->type << endl;
cout << "Item Price" << temp->cost << endl;
cout << endl << endl;
temp = temp->next; //forward to the next node
}
}这里的问题是,您的代码在打印显示函数后不会停止,因为它是while循环的一部分。因此,它会打印菜单,然后继续再次打印选项 要确保打印菜单后循环暂停,请将代码更改为:
if (selection == 1)
{
system("CLS");
cout << "Display Menu" << endl;
Display();
cout << endl << endl;
system("pause");
}
systempause也是算法文件的一部分,因此不需要包含任何内容。这样,整个菜单将从显示功能打印出来,然后是一些换行符,最后是按ENTER键的提示。在按下ENTER键之前,while循环将不会继续
注意:也有其他方法,但这是最简单和最短的方法。如果您对我的答案有任何疑问,或者我的答案无效,请在评论框中通知我 @Pepper:将您的问题简化为一个具体的、最小的示例,读者可以在这里尝试,并完整地发布代码。现在我投票结束这个问题,因为没有这样一个可重复的例子。@NeilButterworth:你引用了一个链接,指向一个关于为什么应该避免使用系统的问题,一个试图在Windows程序中清除屏幕的初学者。背景确实很重要。在这种情况下,链接是不真实的。到底是什么不起作用?这件事应该在以下情况下工作:如果在正常环境下在Windows上运行,请清除屏幕。尽管这可能不是一个好主意,因为程序做了很多假设:它假设它在Windows上运行,并且它在控制台窗口内运行。这两种假设都可能是错误的。请尊重相关评论,停止争论。至于帖子,你在讨论哪个while循环?我看到两个while循环。