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

搜索

c++中如何格式化輸出_C++20 std::format格式化庫(kù)使用指南

尼克
發(fā)布: 2025-09-29 17:31:02
原創(chuàng)
841人瀏覽過(guò)
c++kquote>C++20引入std::format,提供類(lèi)型安全的現(xiàn)代化字符串格式化,替代printf和ostringstream。需編譯器支持C++20(如GCC 13+、Clang 14+、MSVC 19.30+),頭文件#include <format>,使用{}占位符支持索引、對(duì)齊、精度等控制,可自定義類(lèi)型格式化,提升代碼安全與可讀性。

c++中如何格式化輸出_c++20 std::format格式化庫(kù)使用指南

C++20 引入了 std::format,這是一個(gè)現(xiàn)代化、類(lèi)型安全且高效的格式化庫(kù),用于替代傳統(tǒng)的 printf 和繁瑣的 std::ostringstream 操作。它借鑒了 Python 的字符串格式化語(yǔ)法,使用起來(lái)更直觀、更安全。

啟用 std::format

注意:你需要編譯器和標(biāo)準(zhǔn)庫(kù)支持 C++20 并正確配置才能使用。
  • 編譯器要求:
    • GCC 13+(早期版本需開(kāi)啟實(shí)驗(yàn)性支持)
    • Clang 14+(配合 libc++)
    • MSVC 19.30+(Visual Studio 2022 17.0+)
  • 包含頭文件:

    #include <format>

  • 編譯選項(xiàng)示例(GCC/Clang):

    g++ -std=c++20 -fconcepts -O2 main.cpp

基本用法:std::format 和 std::print

std::format 返回一個(gè)格式化后的字符串,而 std::print 直接輸出到控制臺(tái)(C++23 才正式加入,目前部分實(shí)現(xiàn)可用)。

立即學(xué)習(xí)C++免費(fèi)學(xué)習(xí)筆記(深入)”;

示例:基本格式化

#include <format><br>#include <iostream><br><br>int main() {<br>    std::string name = "Alice";<br>    int age = 30;<br>    double height = 1.68;<br><br>    std::string msg = std::format("姓名: {}, 年齡: {}, 身高: {:.2f}m", name, age, height);<br>    std::cout << msg << std::endl;<br>    // 輸出: 姓名: Alice, 年齡: 30, 身高: 1.68m<br>}
登錄后復(fù)制

格式化語(yǔ)法詳解

占位符使用 {},可指定參數(shù)索引、類(lèi)型、寬度、精度、填充等。

  • 自動(dòng)順序std::format("{}, {}, {}", a, b, c)
  • 指定索引std::format("{1}, {0}", "world", "hello") → "hello, world"
  • 命名參數(shù)(暫不支持):C++20 不支持如 {name} 這樣的命名參數(shù)

格式說(shuō)明符結(jié)構(gòu):{[index]:[fill][align][width][.precision][type]}

常見(jiàn)格式類(lèi)型

比格設(shè)計(jì)
比格設(shè)計(jì)

比格設(shè)計(jì)是135編輯器旗下一款一站式、多場(chǎng)景、智能化的在線圖片編輯器

比格設(shè)計(jì)124
查看詳情 比格設(shè)計(jì)
  • 整數(shù)
    • {:d} 十進(jìn)制
    • std::ostringstream0 小寫(xiě)十六進(jìn)制
    • std::ostringstream1 大寫(xiě)十六進(jìn)制
    • std::ostringstream2 八進(jìn)制
    • std::ostringstream3 二進(jìn)制
  • 浮點(diǎn)數(shù)
    • std::ostringstream4 保留兩位小數(shù)
    • std::ostringstream5 科學(xué)計(jì)數(shù)法
    • std::ostringstream6 不顯示小數(shù)部分
  • 對(duì)齊與填充
    • std::ostringstream7 右對(duì)齊,寬度為8
    • std::ostringstream8 左對(duì)齊
    • std::ostringstream9 居中
    • #include <format>0 左補(bǔ)0,右對(duì)齊
    • #include <format>1 用 * 填充

示例:格式控制

std::cout << std::format("|{:>8}|{:<8}|{:^8}|\n", "left", "right", "center");<br>// |   left|right&&&| center |<br><br>std::cout << std::format("{:08x}", 255) << "\n";  // 000000ff<br>std::cout << std::format("{:.2f}", 3.14159) << "\n"; // 3.14
登錄后復(fù)制

自定義類(lèi)型格式化

要讓自定義類(lèi)型支持 #include <format>2,需特化 #include <format>3。

示例:格式化日期結(jié)構(gòu)

struct Point {<br>    double x, y;<br>};<br><br>template<><br>struct std::formatter<Point> {<br>    constexpr auto parse(auto& ctx) {<br>        return ctx.begin();<br>    }<br><br>    auto format(const Point& p, auto& ctx) const {<br>        return std::format_to(ctx.out(), "({:.2f}, {:.2f})", p.x, p.y);<br>    }<br>};<br><br>// 使用<br>Point p{1.234, 5.678};<br>std::cout << std::format("點(diǎn)坐標(biāo): {}", p) << "\n";<br>// 輸出: 點(diǎn)坐標(biāo): (1.23, 5.68)
登錄后復(fù)制

parse 方法處理格式字符串(如支持 .2f),format 方法執(zhí)行實(shí)際格式化。

基本上就這些。std::format 讓 C++ 字符串格式化變得更簡(jiǎn)潔、更安全。雖然當(dāng)前工具鏈支持還在完善中,但它是未來(lái)標(biāo)準(zhǔn)方式,值得盡早掌握。

以上就是c++++中如何格式化輸出_C++20 std::format格式化庫(kù)使用指南的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

c++速學(xué)教程(入門(mén)到精通)
c++速學(xué)教程(入門(mén)到精通)

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

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

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