欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++20中std::format的示例代碼

 更新時間:2024年10月29日 09:21:40   作者:炫酷的伊莉娜  
本文詳細(xì)介紹了C++20中std::format的功能、使用方法和高級應(yīng)用,包括基本用法、數(shù)字和文本的格式化、日期和時間的處理、自定義類型的格式化等,感興趣的可以了解一下

一、前言

1、傳統(tǒng) C++ 格式化的問題與挑戰(zhàn)

  • 可讀性差:使用 C++ 中的 printf 和 scanf 家族函數(shù)進(jìn)行格式化輸出和輸入時,它們的語法較為復(fù)雜,難以閱讀。在較大的代碼項目中,可讀性差會導(dǎo)致維護(hù)困難。
  • 類型安全性差:printf 和 scanf 等函數(shù)無法在編譯期間檢查參數(shù)的類型是否正確,這可能導(dǎo)致運(yùn)行時錯誤,甚至引發(fā)程序崩潰。
  • 不夠靈活:對于復(fù)雜的格式化需求,printf 和 scanf 等函數(shù)提供的功能有限。例如,它們不支持自定義類型的格式化,也不方便處理寬字符和多字節(jié)字符集。
  • 性能開銷:由于傳統(tǒng)的格式化方法在運(yùn)行時需要處理格式字符串,它們可能導(dǎo)致額外的性能開銷。

2、C++20 引入 std::format 的背景

鑒于傳統(tǒng) C++ 格式化方法的局限性,C++20 標(biāo)準(zhǔn)中引入了 std::format 庫,目的是提供一種更現(xiàn)代、更安全、更靈活的格式化方法。引入 std::format 的主要目的:

  • 提高可讀性:std::format 采用了一種更加簡潔、易懂的語法,使得格式化字符串更具可讀性。
  • 增強(qiáng)類型安全:std::format 在編譯期間就可以檢查參數(shù)類型的正確性,從而降低運(yùn)行時錯誤的風(fēng)險。
  • 擴(kuò)展功能:std::format 支持自定義類型的格式化,同時兼容寬字符和多字節(jié)字符集。這使得開發(fā)人員能夠滿足更為復(fù)雜的格式化需求。
  • 性能優(yōu)化:std::format 設(shè)計時充分考慮了性能問題,相比傳統(tǒng)的格式化方法,它在許多場景下能夠提供更高的性能。

總之,std::format 作為 C++20 標(biāo)準(zhǔn)的一部分,旨在解決傳統(tǒng) C++ 格式化方法的問題,并為開發(fā)者提供一種更現(xiàn)代、更安全、更靈活的格式化工具。

二、std::format 簡介

1、std::format 的基本概念

std::format 是 C++20 標(biāo)準(zhǔn)庫中新增的一個格式化工具,它基于 Python 中的 str.format() 函數(shù),提供了一種類型安全且易于閱讀的字符串格式化方法。std::format 的主要特點包括:

  • 替換字段:std::format 使用花括號 {} 作為替換字段的占位符,這些替換字段在格式化時會被相應(yīng)的參數(shù)值替換。
  • 格式規(guī)范:std::format 支持在替換字段內(nèi)部定義格式規(guī)范,例如指定輸出寬度、對齊方式和填充字符等。格式規(guī)范使用冒號:分隔,放在花括號內(nèi)。
  • 編譯時類型檢查:std::format 在編譯期間檢查參數(shù)類型的正確性,以提高類型安全性。
  • 自定義類型支持:std::format 以通過重載 formatter 特化來支持自定義類型的格式化。

2、std::format 與 printf、iostreams 的對比

下面我們將對比 std::format 與 printf 和 iostreams 之間的主要差異:

可讀性:std::format 使用花括號作為占位符,并允許在占位符內(nèi)定義格式規(guī)范。這使得格式化字符串更具可讀性,相較于 printf 和 iostreams 更為簡潔明了。

std::cout << std::format("Hello, {}!\n", "World");  // std::format
printf("Hello, %s!\n", "World");                    // printf
std::cout << "Hello, " << "World" << "!\n";         // iostreams

類型安全:std::format 在編譯期間檢查參數(shù)類型的正確性,而 printf 在運(yùn)行時檢查類型。iostreams 也具有類型安全性,但 std::format 更接近 printf 的語法,使得從 printf 遷移到std::format 更容易。

擴(kuò)展性:std::format 支持自定義類型的格式化,而 printf 僅支持內(nèi)置類型。iostreams 通過重載插入和提取操作符支持自定義類型,但 std::format 提供更為統(tǒng)一的擴(kuò)展方法。

性能:std::format 在設(shè)計時充分考慮了性能問題,因此在許多場景下性能優(yōu)于 iostreams。而與 printf 相比,std::format 的性能表現(xiàn)也非常出色。

綜上所述,std::format 在可讀性、類型安全性、擴(kuò)展性和性能方面都表現(xiàn)優(yōu)異,成為現(xiàn)代 C++ 編程中推薦的字符串格式化工具。

3、高效使用std::format的理由

  • 統(tǒng)一的格式化語法:std::format 提供了一種統(tǒng)一的格式化語法,無論是內(nèi)置類型還是自定義類型,都可以使用相同的方法進(jìn)行格式化。這有助于簡化代碼并降低維護(hù)成本。
  • 簡化代碼:由于 std::format 提供了更簡潔的語法,使用它可以減少代碼量,使代碼更易于理解。相較于 printf 和 iostreams,std::format 更適合處理復(fù)雜的字符串格式化需求。
  • 避免運(yùn)行時錯誤:std::format 在編譯期間檢查參數(shù)類型,能夠減少因類型錯誤導(dǎo)致的運(yùn)行時錯誤。這有助于提高代碼的健壯性和穩(wěn)定性。
  • 易于遷移:對于已經(jīng)習(xí)慣使用 printf 的開發(fā)者,std::format 提供了類似的語法和功能,可以輕松從 printf 遷移到 std::format。
  • 便于調(diào)試和優(yōu)化:std::format 的性能表現(xiàn)優(yōu)異,且支持各種格式化選項,方便開發(fā)者進(jìn)行調(diào)試和性能優(yōu)化。

總之,std::format 作為 C++20 標(biāo)準(zhǔn)庫的一部分,為開發(fā)者提供了強(qiáng)大、易用的字符串格式化工具。使用 std::format 可以簡化代碼、提高可讀性、增強(qiáng)類型安全性,并有助于提高代碼的健壯性和性能。因此,在現(xiàn)代 C++ 編程中,高效使用 std::format 是非常重要的。

三、基本用法

1、格式字符串與占位符

std::format 使用格式字符串來定義輸出的格式。格式字符串中的占位符用花括號 {} 表示,可以包含以下幾個部分:

  • 參數(shù)索引:位于花括號內(nèi)的數(shù)字,用于指定要替換的參數(shù)的位置。例如,{0} 表示第一個參數(shù),{1} 表示第二個參數(shù),依此類推。
  • 格式規(guī)范:位于冒號:之后的部分,用于指定參數(shù)的格式選項。例如,{:d} 表示將參數(shù)格式化為十進(jìn)制整數(shù)。
  • 文本:花括號之間可以包含任意文本,這些文本將原樣輸出。例如,{0} is {1} 中的 is 會原樣輸出。
#include <iostream>
#include <format>

int main()
{
    int age = 30;
    double pi = 3.1415926;
    std::string name = "Alice";
    std::cout << std::format("My name is {0} and I am {1} years old.\n", name, age);
    std::cout << std::format("Pi is approximately {0}.\n", pi);
    return 0;
}

2、類型規(guī)格與格式選項

std::format 支持各種類型規(guī)格與格式選項,以便對輸出進(jìn)行詳細(xì)的控制。以下是一些常見的類型規(guī)格與格式選項

(1)整數(shù)

std::cout << std::format("{0:d} {0:x} {0:X} {0:o} {0:b}\n", 42);

(2)浮點數(shù)

std::cout << std::format("{0:f} {0:e} {0:E} {0:g} {0:G}\n", 3.1415926535);

(3)字符串

s:字符串

std::cout << std::format("{:s}\n", "Hello, World!");

(4)寬度、對齊和填充

  • <:左對齊
  • >:右對齊
  • ^:居中對齊
  • 數(shù)字:指定輸出寬度
  • 字符:指定填充字符
std::cout << std::format("{:<10} | {:>10} | {:^10}\n", "left", "right", "center");
std::cout << std::format("{:*<10} | {:#>10} | {:_^10}\n", "left", "right", "center");

(5)精度

對于浮點數(shù),精度用于指定小數(shù)點后的位數(shù);對于字符串,精度用于指定最大輸出長度。

std::cout << std::format("{:.2f} | {:.3e} | {:.4s}\n", 3.1415926, 12345.6789, "abcdefgh");

(6)整數(shù)和浮點數(shù)的進(jìn)位

整數(shù)和浮點數(shù)的進(jìn)位可以使用 # 選項,它會在八進(jìn)制和十六進(jìn)制數(shù)字前添加 0 或 0x(0X)前綴,或在浮點數(shù)上強(qiáng)制輸出小數(shù)點。

std::cout << std::format("{:#x} | {:#o} | {:#f}\n", 42, 42, 3.14);

(7)正負(fù)號

使用 + 選項可以強(qiáng)制輸出正數(shù)的正號。

std::cout << std::format("{:+d} | {:+f}\n", 42, 3.14);

(8)自定義類型

要格式化自定義類型,需要為類型特化 std::formatter 模板,并提供 parse 和 format 成員函數(shù),這使得 std::format 可以以一種統(tǒng)一的方式處理內(nèi)置類型和自定義類型。

struct Point
{
    int x;
    int y;
};

template<>
struct std::formatter<Point>
{
    auto parse(format_parse_context& ctx)
    {
        return ctx.begin();
    }
    auto format(const Point& p, format_context& ctx)
    {
        return std::format_to(ctx.out(), "({:d}, {:d})", p.x, p.y);
    }
};

std::cout << std::format("{0}\n", Point{3, 4});

四、格式化數(shù)字

在使用 std::format 時,可能會需要更多地控制數(shù)字的格式。

1、控制數(shù)字的寬度、精度與填充

要控制數(shù)字的寬度,請在格式說明符中指定一個整數(shù)。此外還可以使用 0 指定填充字符,例如 {:05} 表示將數(shù)字格式化為至少 5 個字符寬,不足部分用 0 填充。

std::cout << std::format("{:5}", 42);  // "   42"
std::cout << std::format("{:05}", 42); // "00042"

對于浮點數(shù),可以使用 . 后接一個整數(shù)來指定精度。

std::cout << std::format("{:.2f}", 3.14159); // "3.14"

2、顯示或隱藏正負(fù)號

要顯示數(shù)字的正負(fù)號,可以使用 + 標(biāo)志。

std::cout << std::format("{:+}", 42);  // "+42"
std::cout << std::format("{:+}", -42); // "-42"

3、進(jìn)制轉(zhuǎn)換(十進(jìn)制、十六進(jìn)制、八進(jìn)制等)

要將數(shù)字格式化為其他進(jìn)制,可以使用以下格式說明符:

  • d:十進(jìn)制(默認(rèn))
  • x:十六進(jìn)制(小寫字母)
  • X:十六進(jìn)制(大寫字母)
  • o:八進(jìn)制
  • b:二進(jìn)制(小寫字母)
  • B:二進(jìn)制(大寫字母)
std::cout << std::format("{:x}", 42); // "2a"
std::cout << std::format("{:X}", 42); // "2A"
std::cout << std::format("{:o}", 42); // "52"
std::cout << std::format("{:b}", 42); // "101010"

4、浮點數(shù)格式化選項

對于浮點數(shù),可以使用以下格式說明符:

  • f:定點表示(默認(rèn))
  • F:定點表示(無窮大和非數(shù)字為大寫表示)
  • e:科學(xué)計數(shù)法(小寫字母)
  • E:科學(xué)計數(shù)法(大寫字母)
  • g:通用格式,根據(jù)值的大小和指定精度自動選擇定點表示或科學(xué)計數(shù)法(小寫字母)
  • G:通用格式,根據(jù)值的大小和指定精度自動選擇定點表示或科學(xué)計數(shù)法(大寫字母)

可以看到不同浮點數(shù)格式化選項的使用方法。這使得 std::format 成為一個非常靈活和強(qiáng)大的工具,能夠處理各種數(shù)字格式化需求。

五、格式化文本

在使用 std::format 時,除了處理數(shù)字之外,還需要考慮如何格式化文本。

1、控制字符串的寬度與填充

要設(shè)置字符串的最小寬度,請在格式說明符中指定一個整數(shù)。您還可以通過在整數(shù)前加上填充字符來設(shè)置填充字符。

std::cout << std::format("{:10}", "hello");   // "hello     "
std::cout << std::format("{:_<10}", "hello"); // "hello_____"

2、處理特殊字符與轉(zhuǎn)義

要在格式化字符串中包含大括號 {},可以使用兩個連續(xù)的大括號 {{ 或 }} 進(jìn)行轉(zhuǎn)義。

std::cout &lt;&lt; std::format("The set contains {{1, 2, 3}}"); // "The set contains {1, 2, 3}"

要在格式化字符串中包含反斜杠和其他特殊字符,請使用反斜杠進(jìn)行轉(zhuǎn)義,如 \n 表示換行符,\t 表示制表符等。

std::cout << std::format("Line 1\\nLine 2"); // "Line 1\nLine 2"

3、使用 std::format 處理多語言與 Unicode

std::format 支持 Unicode 字符和多語言文本處理。為了確保正確處理 Unicode 字符,請使用 u8 前綴表示 UTF-8 編碼的字符串字面值。

std::cout << std::format(u8"你好,世界!"); // "你好,世界!"

在處理 Unicode 字符串時,確保使用正確的編碼,否則可能會導(dǎo)致亂碼或無法解釋的字符。std::format 兼容 C++17 及更高版本的 std::u8string 類型,能夠更輕松地處理多語言文本。

std::format 提供了處理字符串寬度、填充、特殊字符、轉(zhuǎn)義以及多語言和 Unicode 字符的能力,這使得 std::format 成為一個非常適用于現(xiàn)代 C++ 應(yīng)用程序的強(qiáng)大工具。

六、格式化日期與時間

std::format 可以與 C++ 的 chrono 庫一起使用,方便地格式化日期和時間。

1、使用 chrono 庫處理時間點與持續(xù)時間

chrono 庫提供了表示時間點和持續(xù)時間的類,如 system_clock::time_point、steady_clock::time_point、duration 等。要使用 std::format 格式化這些類型,首先需要包含和頭文件。

#include <iostream>
#include <chrono>
#include <format>

int main()
{
    auto now = std::chrono::system_clock::now();
    auto seconds_since_epoch = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch());
    std::cout << std::format("Seconds since epoch: {}\n", seconds_since_epoch.count());
}

2、時間格式化選項

要格式化日期和時間,可以使用擴(kuò)展的格式說明符:

  • %Y:四位年份
  • %m:月份(01-12)
  • %d:月份中的第幾天(01-31)
  • %H:小時(00-23)
  • %M:分鐘(00-59)
  • %S:秒(00-60,因閏秒可能為60)

為了使用這些格式化選項,需要先將 chrono 中的 time_point 轉(zhuǎn)換為 std::tm 結(jié)構(gòu),并包含頭文件。

#include <iostream>
#include <chrono>
#include <format>
#include <iomanip>

int main()
{
    auto now = std::chrono::system_clock::now();
    auto now_t = std::chrono::system_clock::to_time_t(now);
    auto now_tm = *std::localtime(&now_t);
    std::cout << std::format("{:%Y-%m-%d %H:%M:%S}\n", now_tm);
    return 0;
}

3、本地化日期與時間的顯示

要顯示本地化的日期和時間,可以使用 std::locale,使用 imbue() 函數(shù)將流與特定的語言環(huán)境關(guān)聯(lián)起來。

#include <iostream>
#include <chrono>
#include <format>
#include <iomanip>
#include <locale>

int main()
{
    auto now = std::chrono::system_clock::now();
    auto now_t = std::chrono::system_clock::to_time_t(now);
    auto now_tm = *std::localtime(&now_t);
    std::locale::global(std::locale(""));
    std::cout.imbue(std::locale());
    std::cout << std::format("{:%c}\n", now_tm);
    return 0;
}

注意:std::locale::global() 和 imbue() 函數(shù)的參數(shù)取決于平臺和語言設(shè)置,也可以為特定的流或字符串指定語言環(huán)境。

通過以上方法,可以使用 std::format 來靈活地處理和格式化日期與時間。與 C++ 的 chrono 庫結(jié)合使用,可以更方便地處理時間點和持續(xù)時間,同時允許定制時間格式化選項以適應(yīng)不同的應(yīng)用場景。同時,通過 std::locale 類,還可以實現(xiàn)日期和時間的本地化顯示,以適應(yīng)不同地區(qū)的用戶。

#include <iostream>
#include <chrono>
#include <format>
#include <iomanip>
#include <locale>

int main()
{
    auto now = std::chrono::system_clock::now();
    auto now_t = std::chrono::system_clock::to_time_t(now);
    auto now_tm = *std::localtime(&now_t);
    std::cout << std::format("{:%A, %B %d, %Y}\n", now_tm); // 顯示星期、月份、日期和年份,例如:"Sunday, April 09, 2023"
    std::cout << std::format("{:%D}\n", now_tm); // 以MM/DD/YY格式顯示日期,例如:"04/09/23"
    std::cout << std::format("{:%T}\n", now_tm); // 以HH:MM:SS格式顯示時間,例如:"17:30:59"
    std::cout << std::format("{:%r}\n", now_tm); // 以12小時制顯示時間,例如:"05:30:59 PM"
    return 0;
}

七、自定義類型的格式化

std::format 允許為自定義類型實現(xiàn)格式化支持,這為自定義類型提供了更好的輸出顯示。要實現(xiàn)自定義類型的格式化支持,需要特化 std::formatter。

1、實現(xiàn)自定義類型的格式化支持

要為自定義類型實現(xiàn)格式化支持,您需要為其特化 std::formatter,并重載 parse() 和 format() 成員函數(shù)。實現(xiàn)自定義類型格式化輸出的步驟:

  • 包含頭文件。
  • 為自定義類型特化 std::formatter。
  • 在特化的 std::formatter 中,重載 parse() 和 format() 成員函數(shù)。

2、使用 fmt::formatter 特化

#include <iostream>
#include <format>
#include <string>

struct Person
{
    std::string name;
    int age;
};

template <>
struct std::formatter<Person>
{
    constexpr auto parse(format_parse_context& ctx)
    {
        auto it = ctx.begin();
        auto end = ctx.end();
        if (it != end && *it != '}')
            throw format_error("Invalid format");
        return it;
    }
    auto format(const Person& p, format_context& ctx)
    {
        return format_to(ctx.out(), "{} ({})", p.name, p.age);
    }
};

3、為自定義類型實現(xiàn)格式化輸出

現(xiàn)在已經(jīng)為 Person 類型實現(xiàn)了 std::formatter 特化,可以使用 std::format 函數(shù)輕松格式化 Person對象了:

int main()
{
    Person alice{"Alice", 30};
    std::cout << std::format("{}", alice) << std::endl; // Alice (30)
}

通過實現(xiàn) std::formatte r特化并重載 parse() 和 format() 成員函數(shù),可以為自定義類型提供靈活且易于使用的格式化支持,這可以大大提高 C++ 代碼的可讀性和維護(hù)性。

八、std::format的高級技巧與應(yīng)用

1、格式字符串的動態(tài)生成

在某些情況下,可能需要根據(jù)運(yùn)行時參數(shù)動態(tài)生成格式字符串,可以使用 std::string 或其他字符串處理方法來實現(xiàn)這一點。

根據(jù)用戶輸入設(shè)置小數(shù)點后的位數(shù):

#include <iostream>
#include <format>

int main()
{
    double pi = 3.141592653589793;
    int precision = 2;
    std::string format_str = "{:." + std::to_string(precision) + "f}";
    std::cout << std::format(format_str, pi) << std::endl; // 3.14
    return 0;
}

2、使用 std::format 與其他標(biāo)準(zhǔn)庫組件

std::format 可以與其他標(biāo)準(zhǔn)庫組件(如容器、文件操作等)一起使用,以提供更高級的格式化功能。

(1)與 STL 容器完美結(jié)合

#include <iostream>
#include <format>
#include <vector>

int main()
{
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    std::string result = std::format("Numbers: [");
    for (const auto& num : numbers)
    {
        result += std::format("{}, ", num);
    }
    result = result.substr(0, result.size() - 2) + "]";
    std::cout << result << std::endl; // Numbers: [1, 2, 3, 4, 5]
    return 0;
}

(2)文件操作一起使用

#include <iostream>
#include <format>
#include <fstream>

int main()
{
    std::ofstream output_file("output.txt");
    output_file << std::format("{:<10} {:>10}\n", "Name", "Score");
    output_file << std::format("{:<10} {:>10}\n", "Alice", 95);
    output_file << std::format("{:<10} {:>10}\n", "Bob", 80);
    output_file.close();
    std::cout << "Output saved to output.txt" << std::endl;
    return 0;
}

3、提高格式化性能的建議

雖然 std::format 在很多方面都比傳統(tǒng)的格式化方法更高效,但在某些情況下,性能仍然是一個值得關(guān)注的問題。以下是一些建議,可以幫助提高格式化性能:

  • 避免頻繁構(gòu)建和銷毀格式化字符串:在循環(huán)或高頻調(diào)用的函數(shù)中避免重復(fù)構(gòu)建格式化字符串??紤]將格式化字符串預(yù)先計算并存儲為常量或靜態(tài)變量。
  • 減少不必要的字符串連接:在可能的情況下,盡量避免使用 + 運(yùn)算符連接字符串??梢允褂?std::format 直接構(gòu)建最終字符串,而不是分段拼接。例如,可以將多個 std::format 調(diào)用替換為一個帶有多個占位符的調(diào)用。
  • 使用預(yù)分配的內(nèi)存:為頻繁使用的字符串分配足夠的預(yù)先分配的內(nèi)存,以減少內(nèi)存分配和重新分配的開銷。例如,您可以使用std::string::reserve() 函數(shù)為字符串預(yù)留足夠的空間。
  • 避免不必要的類型轉(zhuǎn)換:在可能的情況下,盡量避免在格式化之前將數(shù)據(jù)類型轉(zhuǎn)換為其他類型。例如,不要在格式化之前將 int 轉(zhuǎn)換為 std::string,而是直接使用 int 類型的格式規(guī)范。
  • 選擇合適的容器和算法:根據(jù)具體應(yīng)用場景選擇合適的容器和算法,以實現(xiàn)最佳性能。例如,對于需要快速插入和刪除元素的場景,使用 std::list 或 std::deque 而不是 std::vector。

通過遵循以上建議,可以確保在使用 std::format 進(jìn)行格式化操作時實現(xiàn)最佳性能。這將有助于提高 C++ 應(yīng)用程序的整體性能和響應(yīng)速度。

九、結(jié)論與展望

1、std::format在現(xiàn)代C++中的地位與作用

std::format 是 C++20 中引入的一個重要特性,它在現(xiàn)代 C++ 中扮演著重要的角色。與傳統(tǒng)的 C++ 格式化方法相比,如 printf 和 iostreams,std::format 提供了更為強(qiáng)大、靈活和安全的格式化功能。它支持類型安全,易于擴(kuò)展,支持自定義類型和多語言環(huán)境。std::format 有助于提高代碼的可讀性和維護(hù)性,使得 C++ 在格式化方面與其他現(xiàn)代編程語言保持同步。

2、與其他語言的格式化庫的比較

std::format 的設(shè)計受到了其他編程語言中格式化庫的啟發(fā),如 Python 的 str.format() 和 f-string,以及 Rust 的 std::fmt。與這些庫相比,std::format 具有類似的功能和語法,同時充分利用了 C++ 的類型系統(tǒng)和編譯時特性,以實現(xiàn)最佳性能。

3、C++標(biāo)準(zhǔn)化進(jìn)程中格式化相關(guān)的未來發(fā)展

C++ 標(biāo)準(zhǔn)化進(jìn)程將繼續(xù)發(fā)展和完善格式化功能。例如,C++23 中可能會引入 std::format 的擴(kuò)展,以提供更豐富的格式選項和本地化支持。此外,C++ 社區(qū)也將繼續(xù)關(guān)注其他語言的發(fā)展,以確保 C++ 在格式化方面與時俱進(jìn)。

總之,std::format 為 C++ 開發(fā)者提供了一種強(qiáng)大且易于使用的格式化工具。它不僅帶來了更好的類型安全和擴(kuò)展性,還為未來的 C++ 標(biāo)準(zhǔn)提供了一個堅實的基礎(chǔ)。

到此這篇關(guān)于C++20中std::format的示例代碼的文章就介紹到這了,更多相關(guān)C++20 std::format內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++智能指針詳解

    C++智能指針詳解

    從比較簡單的層面來看,智能指針是RAII(Resource Acquisition Is Initialization,資源獲取即初始化)機(jī)制對普通指針進(jìn)行的一層封裝。這樣使得智能指針的行為動作像一個指針,本質(zhì)上卻是一個對象,這樣可以方便管理一個對象的生命周期
    2022-08-08
  • C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法

    C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法

    這篇文章主要介紹了C++實現(xiàn)判斷一個字符串是否為UTF8或GBK格式的方法,涉及C++針對字符編碼的遍歷、判斷、編碼轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • C/C++?函數(shù)的存儲位置和占用空間詳解

    C/C++?函數(shù)的存儲位置和占用空間詳解

    Lambda函數(shù)的代碼部分在代碼段中,被捕獲的變量存儲在Lambda函數(shù)對象的內(nèi)部,這些變量的存儲位置取決于Lambda函數(shù)對象的存儲位置,這篇文章主要介紹了C/C++函數(shù)的存儲位置和占用空間,需要的朋友可以參考下
    2023-06-06
  • C語言深入講解函數(shù)參數(shù)的使用

    C語言深入講解函數(shù)參數(shù)的使用

    函數(shù)的參數(shù)分為形參和實參兩種。形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內(nèi)都可以使用,離開該函數(shù)則不能使用。實參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實參變量也不能使用
    2022-04-04
  • c語言根據(jù)用戶輸入的出生年份并計算出當(dāng)前年齡

    c語言根據(jù)用戶輸入的出生年份并計算出當(dāng)前年齡

    這篇文章主要介紹了c語言根據(jù)用戶輸入的出生年份并計算出當(dāng)前年齡,需要的朋友可以參考下
    2023-03-03
  • C++ odr用法案例詳解

    C++ odr用法案例詳解

    這篇文章主要介紹了C++ odr用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C語言如何正確的終止正在運(yùn)行的子線程

    C語言如何正確的終止正在運(yùn)行的子線程

    這篇文章主要介紹了C語言如何正確的終止正在運(yùn)行的子線程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • C語言實現(xiàn)最長遞增子序列問題的解決方法

    C語言實現(xiàn)最長遞增子序列問題的解決方法

    這篇文章主要介紹了C語言實現(xiàn)最長遞增子序列問題的解決方法,采用遞歸的方法解決該問題,是非常經(jīng)典的一類算法,需要的朋友可以參考下
    2014-09-09
  • matlab?GUI指紋識別門禁系統(tǒng)介紹及源碼實現(xiàn)

    matlab?GUI指紋識別門禁系統(tǒng)介紹及源碼實現(xiàn)

    這篇文章主要為大家介紹了matlab?GUI指紋識別門禁系統(tǒng)的介紹及源碼實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C++文件讀和寫的使用

    C++文件讀和寫的使用

    本文主要介紹了C++文件讀和寫的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評論