首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 控制台程序實現多界面切換:system("cls") 清屏重繪

     編輯:程式設計疑難解答

需求場景

VS2013 中編寫 C++ 控制台程序(黑框),需實現主菜單顯示,用戶輸入選項後跳轉到對應功能界面,返回主菜單繼續操作。

核心技術:system("cls") 清屏

Windows 控制台無原生「界面」概念,通過 清屏 + 重新繪製文本 模擬界面切換。

完整可運行示例

// ConsoleApplication.cpp
#include "stdafx.h" // VS 預編譯頭,非 VS 可刪除
#include <iostream>
#include <cstdlib> // system() 需此頭文件

using namespace std;

void showMainMenu() {
    system("cls"); // 清屏
    cout << "========== 主菜單 ==========" << endl;
    cout << "1. Hello World" << endl;
    cout << "2. How are you?" << endl;
    cout << "3. 退出程序" << endl;
    cout << "請輸入選項 (1-3): ";
}

void funcHello() {
    system("cls");
    cout << "--- 功能 1 ---" << endl;
    cout << "Hello World!" << endl;
    cout << "按任意鍵返回主菜單...";
    cin.ignore(); cin.get(); // 等待用戶按鍵
}

void funcHowAreYou() {
    system("cls");
    cout << "--- 功能 2 ---" << endl;
    cout << "How are you?" << endl;
    cout << "按任意鍵返回主菜單...";
    cin.ignore(); cin.get();
}

int main() {
    int choice = 0;
    
    while (true) {
        showMainMenu();
        if (!(cin >> choice)) { // 輸入非數字處理
            cin.clear();
            cin.ignore(numeric_limits::max(), '\n');
            continue;
        }
        
        switch (choice) {
            case 1: funcHello(); break;
            case 2: funcHowAreYou(); break;
            case 3: 
                cout << "感謝使用,再見!" << endl;
                return 0;
            default:
                system("cls");
                cout << "無效選項,請輸入 1-3。" << endl;
                cin.ignore(); cin.get();
        }
    }
    return 0;
}

關鍵點詳解

函數/技術作用注意事項
system("cls")調用 Windows cmd 清屏命令需 #include <cstdlib>;跨平台可用 ANSI 轉義序列 \033[2J\033[H
cin.ignore(); cin.get();清空緩衝區並等待回車防止上次輸入殘留的換行符導致直接跳過
cin.clear(); cin.ignore(...)處理非數字輸入錯誤狀態恢復流狀態並丟棄錯誤行
while(true) 循環主程序持續運行直到選擇退出配合 return 0 退出

進階優化方向

  • 跨平台清屏:封裝 clearScreen(),Windows 用 system("cls"),Linux/Mac 用 system("clear") 或 ANSI 碼。
  • 菜單數據驅動:用結構體/向量存儲菜單項,動態生成,易擴展。
  • 輸入驗證函數:提取通用 getValidInt(min, max) 簡化主邏輯。
  • 顏色輸出:Windows 用 SetConsoleTextAttribute,跨平台用 ANSI 顏色碼。

總結

控制台程序「界面切換」本質是 清屏 + 重繪文本 + 循環等待輸入。掌握 system("cls")、輸入流處理、循環結構即可實現多級菜單系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved