C++ 为什么while中的系统(“CLS”)不工作?

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循环中

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循环。