<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          #C++ fmt# C++字符串格式化 fmt庫

          共 2982字,需瀏覽 6分鐘

           ·

          2024-04-12 00:39

           文章所涉及內(nèi)容更多來自網(wǎng)絡,在此聲明,并感謝知識的貢獻者!

          fmt簡介

          Fmt簡介

          fmt(即 "fast {format}")是一個用于 C++ 的現(xiàn)代、快速、類型安全的格式化庫。它的目標是提供簡單易用的 API,同時保持出色的性能和安全性。

          fmt特性

          Fmt特性
          -簡單易用:fmt 庫提供了直觀的 API,易于學習和使用。它支持類似于 Python 的格式化字符串語法,可以方便地進行字符串格式化。
          -類型安全:fmt 庫是類型安全的,可以確保格式化字符串和參數(shù)類型的匹配,避免了常見的格式化錯誤。
          -高性能:fmt 庫具有出色的性能,通常比標準庫提供的格式化功能更快。它采用了一些高效的技術來提高格式化速度,如預分配緩沖區(qū)和內(nèi)存復用。
          -可擴展性:fmt 庫支持自定義格式化器,可以輕松地擴展和定制格式化功能,以滿足特定需求。
          -跨平臺:fmt 庫是跨平臺的,可以在各種操作系統(tǒng)和編譯器上運行,包括 Windows、Linux、macOS 等。

          fmt 與 std::string 直接操作對比


          Fmt與std::string直接拼接對比
          通常情況下,使用 fmt 庫進行格式化輸出比直接使用 std::string 進行拼接更高效。這是因為 fmt 庫經(jīng)過了優(yōu)化,并且采用了一些技術來提高性能,如預分配緩沖區(qū)、內(nèi)存復用等。而直接使用 std::string 進行拼接可能會導致頻繁的內(nèi)存分配和拷貝操作,從而降低了效率。
          另外,fmt 庫還提供了類型安全的格式化功能,可以確保格式化字符串和參數(shù)類型的匹配,避免了常見的格式化錯誤。
          因此,如果您關注性能和代碼的簡潔性,推薦使用 fmt 庫進行格式化輸出。不過,對于簡單的拼接操作,直接使用 std::string 也可能足夠快速,并且更易讀易懂。最佳實踐是根據(jù)具體情況選擇合適的方法。

          fmt資料

          Fmt資料
          github:
          https://github.com/fmtlib/fmt
          api指南:
          https://fmt.dev/latest/api.html

          fmt使用

          Fmt使用
          方案1:CMake編譯
          Centos上編譯fmt
          #安裝git
          yum -y install git
          #下載fmt
          git clone https://github.com/fmtlib/fmt.git
          #創(chuàng)建構建目錄并進入:在克隆的 fmt 目錄外創(chuàng)建一個構建目錄,并進入該目錄
          mkdir fmt/build
          cd fmt/build
          #運行CMake:在構建目錄中運行 CMake 來配置編譯過程
          cmake ..
          #編譯和安裝:運行 make 命令進行編譯,然后使用 make install 命令安裝 fmt 庫到指定目錄
          make
          make install
          #確認安裝:安裝完成后,您可以通過檢查安裝目錄下的文件來確認 fmt 庫是否成功安裝。通常情況下,庫文件會安裝到 /usr/local/lib 目錄下,頭文件會安裝到 /usr/local/include 目錄下。
          #庫文件目錄
          ls /usr/local/lib
          ls /usr/local/lib64
          #頭文件目錄
          ls /usr/local/include

          編輯測試代碼:
          #include "fmt/core.h"
          #include <string>
          int main()
          {
              // {} 占位符,可以占位int float double ....
              std::string world = fmt::format("Hello {}", "World");
              fmt::print("{}", world);
          }

          方案2:將編譯好的靜態(tài)庫文件及頭文件放置項目目錄

          編輯測試代碼:
          #include "fmt/core.h"
          #include <string>
          int main()
          {
              // {} 占位符,可以占位int float double ....
              std::string world = fmt::format("Hello {}", "World");
              fmt::print("{}", world);
          }

          方案3:引用頭部文件
          將下載的頭文件夾放置到項目目錄下
              #define FMT_HEADER_ONLY
              #include "fmt/core.h"
              #include <string>
              int main()
              {
                  // {} 占位符,可以占位int float double ....
                  std::string world = fmt::format("Hello {}", "World");
                  fmt::print("{}", world);
              }

          fmt教程

          fmt教程
          fmt相關頭文件說明:
          僅僅包含頭文件,(需要在包含頭文件之前#define FMT_HEADER_ONLY 推薦)
          fmt/core.h:char/UTF-8主要的格式化函數(shù),支持C++20編譯時檢查,依賴最小化。
          fmt/format.h:完整的格式化API,除了額外的格式化函數(shù)之外,支持本地化(多語言支持)。
          fmt/ranges.h:格式化ranges 和 tuples
          fmt/chrono.h:日期和時間的格式化。
          fmt/std.h:c++標準庫類型的格式化支持。
          fmt/compile.h:格式化字符串的編譯 (編譯時格式化字符串檢測)。FMT_STRING(s)
          fmt/color.h:終端顏色和文本樣式。
          fmt/os.h:提供系統(tǒng)API。
          fmt/ostream.h:支持std::ostream。
          fmt/printf.h:支持printf格式化。
          fmt/xchar.h:可選的wchar_t支持。

          參考資料

          參考資料:
          c++ {fmt}庫使用指南一_c++ fmt-CSDN博客
          https://blog.csdn.net/qq_33944628/article/details/129943438

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲成人综合日本 | 伊伊色综合 | 亚洲国产另类无码 | 丝袜足交亚洲 | 日韩爱爱网 |