亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

c++如何將枚舉(enum)轉換為字符串_c++枚舉類型轉字符串方法

尼克
發(fā)布: 2025-10-15 21:45:01
原創(chuàng)
761人瀏覽過
答案是使用映射、switch語句、宏或模板將C++枚舉轉為字符串。1. 用std::map關聯(lián)枚舉與字符串;2. switch直接返回對應名稱,效率高;3. 宏定義同步生成枚舉和轉換邏輯,提升維護性;4. C++17可用constexpr模板泛化處理。根據(jù)需求選擇方法。

c++如何將枚舉(enum)轉換為字符串_c++枚舉類型轉字符串方法

在C++中,枚舉(enum)默認是整數(shù)類型,不能直接輸出為字符串。如果想將枚舉值轉換為對應的字符串名稱,需要手動實現(xiàn)映射關系。以下是幾種常用且實用的方法。

1. 使用std::map或unordered_map映射

定義一個映射容器,把枚舉值和對應的字符串關聯(lián)起來,是最直觀的方式。

示例代碼:

#include <iostream>
#include <string>
#include <map>
<p>enum class Color {
Red,
Green,
Blue
};</p><p>// 創(chuàng)建映射表
const std::map<Color, std::string> colorToString = {
{Color::Red, "Red"},
{Color::Green, "Green"},
{Color::Blue, "Blue"}
};</p><p>std::string enumToString(Color c) {
auto it = colorToString.find(c);
return (it != colorToString.end()) ? it->second : "Unknown";
}</p><p>int main() {
Color c = Color::Green;
std::cout << enumToString(c) << std::endl;  // 輸出: Green
return 0;
}
登錄后復制

2. 使用switch語句轉換

適用于枚舉數(shù)量少、要求高效或不希望引入STL容器的場景。

std::string enumToString(Color c) {
    switch (c) {
        case Color::Red:   return "Red";
        case Color::Green: return "Green";
        case Color::Blue:  return "Blue";
        default:           return "Unknown";
    }
}
登錄后復制

這種方法運行效率高,編譯器通常會優(yōu)化為跳轉表,適合嵌入式或性能敏感場景。

立即學習C++免費學習筆記(深入)”;

3. 使用宏定義減少重復代碼

通過宏統(tǒng)一定義枚舉和字符串映射,避免寫兩遍名字,提高可維護性。

示例:

#define COLOR_LIST \
    X(Red)         \
    X(Green)       \
    X(Blue)
<p>enum class Color {</p>
                    <div class="aritcle_card">
                        <a class="aritcle_card_img" href="/ai/%E5%BF%AB%E8%BD%AC%E5%AD%97%E5%B9%95">
                            <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680039517993.png" alt="快轉字幕">
                        </a>
                        <div class="aritcle_card_info">
                            <a href="/ai/%E5%BF%AB%E8%BD%AC%E5%AD%97%E5%B9%95">快轉字幕</a>
                            <p>新一代 AI 字幕工作站,為創(chuàng)作者提供字幕制作、學習資源、會議記錄、字幕制作等場景,一鍵為您的視頻生成精準的字幕。</p>
                            <div class="">
                                <img src="/static/images/card_xiazai.png" alt="快轉字幕">
                                <span>357</span>
                            </div>
                        </div>
                        <a href="/ai/%E5%BF%AB%E8%BD%AC%E5%AD%97%E5%B9%95" class="aritcle_card_btn">
                            <span>查看詳情</span>
                            <img src="/static/images/cardxiayige-3.png" alt="快轉字幕">
                        </a>
                    </div>
                <h1>define X(name) name,</h1><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">COLOR_LIST
登錄后復制

undef X

};

const char* colorToString(Color c) { switch (c) {

define X(name) case Color::name: return #name;

    COLOR_LIST
登錄后復制

undef X

    default: return "Unknown";
}
登錄后復制

}

利用預處理器宏,只需修改宏定義即可同步更新枚舉和字符串轉換邏輯,減少出錯可能。

4. C++17及以上:結合if constexpr 和模板(進階用法)

若需泛化處理多個枚舉類型,可結合constexpr和模板實現(xiàn)類型安全的轉換。

實際項目中仍推薦前三種方法,因更清晰易懂。

基本上就這些常用方式。選擇哪種取決于項目需求:簡單用switch,需要擴展性用map,追求維護性可用宏。沒有語言原生支持,但合理設計就能解決。

以上就是c++++如何將枚舉(enum)轉換為字符串_c++枚舉類型轉字符串方法的詳細內容,更多請關注php中文網(wǎng)其它相關文章!

c++速學教程(入門到精通)
c++速學教程(入門到精通)

c++怎么學習?c++怎么入門?c++在哪學?c++怎么學才快?不用擔心,這里為大家提供了c++速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!

下載
來源:php中文網(wǎng)
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號