You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++控制台应用中实现菜单选择执行后恢复初始显示状态

实现方案

这个功能的核心逻辑是用循环包裹「菜单渲染、输入处理、业务逻辑」三个模块,业务逻辑执行完成后回到循环开头重新渲染菜单,仅当用户触发退出操作时终止循环,和你在C#中的实现思路差异很小,只需要额外注意C++控制台输入的异常处理即可。

完整可运行示例代码

#include <iostream>
#include <cstdlib>
#include <limits>

// 跨平台适配宏,兼容Windows、Linux、macOS
#ifdef _WIN32
#define CLEAR_SCREEN system("cls")
#define PAUSE system("pause")
#else
#define CLEAR_SCREEN system("clear")
#define PAUSE std::cout << "按任意键返回菜单..."; std::cin.get(); std::cin.get()
#endif

int main() {
    int choice = 0;
    bool running = true;

    while (running) {
        // 渲染初始菜单
        CLEAR_SCREEN;
        std::cout << "[1] Option 1" << std::endl;
        std::cout << "[2] Option 2" << std::endl;
        std::cout << "[0] 退出程序" << std::endl;
        std::cout << "Choice: ";

        // 输入校验,避免非数字输入导致程序死循环
        if (!(std::cin >> choice)) {
            std::cout << std::endl << "错误:请输入有效数字选项!" << std::endl;
            std::cin.clear();
            std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
            PAUSE;
            continue;
        }

        // 执行业务逻辑
        switch (choice) {
            case 1:
                std::cout << std::endl << "正在执行Option 1关联逻辑..." << std::endl;
                // 此处替换为你自己的业务代码
                PAUSE;
                break;
            case 2:
                std::cout << std::endl << "正在执行Option 2关联逻辑..." << std::endl;
                // 此处替换为你自己的业务代码
                PAUSE;
                break;
            case 0:
                running = false;
                std::cout << std::endl << "程序退出中..." << std::endl;
                break;
            default:
                std::cout << std::endl << "错误:不存在的选项,请重新输入!" << std::endl;
                PAUSE;
                break;
        }
    }

    return 0;
}

关键逻辑说明

  • 清屏操作:Windows下默认使用cls指令清屏,类Unix系统使用clear指令,通过宏判断实现跨平台兼容
  • 输入异常处理:如果用户输入非数字内容,cin会进入错误状态,必须调用cin.clear()重置错误位,再用cin.ignore()清空输入缓冲区残留字符,避免程序进入无限循环
  • 流程暂停:业务逻辑执行完成后加暂停逻辑,避免直接清屏导致用户看不到执行结果
  • 退出机制:通过布尔变量控制循环终止,用户选择退出选项时修改变量值即可结束程序

内容的提问来源于stack exchange,提问作者FNBRChris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:05