
- C 標準庫
- C 標準庫
- C++ 標準庫
- C++ 庫 - 首頁
- C++ 庫 - <fstream>
- C++ 庫 - <iomanip>
- C++ 庫 - <ios>
- C++ 庫 - <iosfwd>
- C++ 庫 - <iostream>
- C++ 庫 - <istream>
- C++ 庫 - <ostream>
- C++ 庫 - <sstream>
- C++ 庫 - <streambuf>
- C++ 庫 - <atomic>
- C++ 庫 - <complex>
- C++ 庫 - <exception>
- C++ 庫 - <functional>
- C++ 庫 - <limits>
- C++ 庫 - <locale>
- C++ 庫 - <memory>
- C++ 庫 - <new>
- C++ 庫 - <numeric>
- C++ 庫 - <regex>
- C++ 庫 - <stdexcept>
- C++ 庫 - <string>
- C++ 庫 - <thread>
- C++ 庫 - <tuple>
- C++ 庫 - <typeinfo>
- C++ 庫 - <utility>
- C++ 庫 - <valarray>
- C++ STL 庫
- C++ 庫 - <array>
- C++ 庫 - <bitset>
- C++ 庫 - <deque>
- C++ 庫 - <forward_list>
- C++ 庫 - <list>
- C++ 庫 - <map>
- C++ 庫 - <multimap>
- C++ 庫 - <queue>
- C++ 庫 - <priority_queue>
- C++ 庫 - <set>
- C++ 庫 - <stack>
- C++ 庫 - <unordered_map>
- C++ 庫 - <unordered_set>
- C++ 庫 - <vector>
- C++ 庫 - <algorithm>
- C++ 庫 - <iterator>
- C++ 高階庫
- C++ 庫 - <any>
- C++ 庫 - <barrier>
- C++ 庫 - <bit>
- C++ 庫 - <chrono>
- C++ 庫 - <cinttypes>
- C++ 庫 - <clocale>
- C++ 庫 - <condition_variable>
- C++ 庫 - <coroutine>
- C++ 庫 - <cstdlib>
- C++ 庫 - <cstring>
- C++ 庫 - <cuchar>
- C++ 庫 - <charconv>
- C++ 庫 - <cfenv>
- C++ 庫 - <cmath>
- C++ 庫 - <ccomplex>
- C++ 庫 - <expected>
- C++ 庫 - <format>
- C++ 庫 - <future>
- C++ 庫 - <flat_set>
- C++ 庫 - <flat_map>
- C++ 庫 - <filesystem>
- C++ 庫 - <generator>
- C++ 庫 - <initializer_list>
- C++ 庫 - <latch>
- C++ 庫 - <memory_resource>
- C++ 庫 - <mutex>
- C++ 庫 - <mdspan>
- C++ 庫 - <optional>
- C++ 庫 - <print>
- C++ 庫 - <ratio>
- C++ 庫 - <scoped_allocator>
- C++ 庫 - <semaphore>
- C++ 庫 - <source_location>
- C++ 庫 - <span>
- C++ 庫 - <spanstream>
- C++ 庫 - <stacktrace>
- C++ 庫 - <stop_token>
- C++ 庫 - <syncstream>
- C++ 庫 - <system_error>
- C++ 庫 - <string_view>
- C++ 庫 - <stdatomic>
- C++ 庫 - <variant>
- C++ STL 庫速查表
- C++ STL - 速查表
- C++ 程式設計資源
- C++ 程式設計教程
- C++ 有用資源
- C++ 討論
C++ iomanip 庫 - put_time 函式
描述
此函式首先構造一個 basic_ostream::sentry 型別的物件來訪問輸出序列。然後(如果評估哨兵物件為真),它呼叫 time_put::put(使用流的選定區域設定)來執行格式化和插入操作,並相應地調整流的內部狀態標誌。最後,在返回之前銷燬哨兵物件。
它用於插入 tmb 指向的日期和時間資訊的表示形式,並根據引數 fmt 指定的格式進行格式化。
宣告
以下是 std::put_time 函式的宣告。
template <class charT> /*unspecified*/ put_time (const struct tm* tmb, const charT* fmt);
引數
tmb − 指向 struct tm 型別物件的指標,其中包含要格式化的日期和時間資訊。struct tm 是在 <ctime> 標頭檔案中定義的類。
fmt − time_put::put 用作格式字串的 C 字串。它包含任意組合的常規字元和特殊格式說明符。這些格式說明符由函式替換為相應的數值,以表示 tmb 中指定的時間。
它們都以百分號 (%) 開頭,如下所示:
說明符 | 替換為 | 示例 |
---|---|---|
%a |
縮寫工作日名稱* | Thu |
%A |
完整工作日名稱* | Thursday |
%b |
縮寫月份名稱* | Aug |
%B |
完整月份名稱* | August |
%c |
日期和時間表示* | Thu Aug 23 14:55:02 2001 |
%C |
年份除以 100 並截斷為整數 (00-99 ) |
20 |
%d |
月份中的日期,零填充 (01-31 ) |
23 |
%D |
簡短的 MM/DD/YY 日期,相當於 %m/%d/%y |
08/23/01 |
%e |
月份中的日期,空格填充 ( 1-31 ) |
23 |
%F |
簡短的 YYYY-MM-DD 日期,相當於 %Y-%m-%d |
2001-08-23 |
%g |
基於周的年份,最後兩位數字 (00-99 ) |
01 |
%G |
基於周的年份 | 2001 |
%h |
縮寫月份名稱* (與 %b 相同) |
Aug |
%H |
24 小時制小時 (00-23 ) |
14 |
%I |
12 小時制小時 (01-12 ) |
02 |
%j |
一年中的日期 (001-366 ) |
235 |
%m |
月份作為十進位制數 (01-12 ) |
08 |
%M |
分鐘 (00-59 ) |
55 |
%n |
換行符 ('\n' ) |
|
%p |
AM 或 PM 表示 | PM |
%r |
12 小時制時間* | 02:55:02 pm |
%R |
24 小時制 HH:MM 時間,相當於 %H:%M |
14:55 |
%S |
秒 (00-61 ) |
02 |
%t |
水平製表符 ('\t' ) |
|
%T |
ISO 8601 時間格式 (HH:MM:SS ),相當於 %H:%M:%S |
14:55:02 |
%u |
ISO 8601 工作日,星期一為 1 (1-7 ) |
4 |
%U |
以第一個星期日為第一週的第一天計算的週數 (00-53 ) |
33 |
%V |
ISO 8601 週數 (00-53 ) |
34 |
%w |
工作日,以星期日為 0 (0-6 ) |
4 |
%W |
以第一個星期一為第一週的第一天計算的週數 (00-53 ) |
34 |
%x |
日期表示* | 08/23/01 |
%X |
時間表示* | 14:55:02 |
%y |
年份,最後兩位數字 (00-99 ) |
01 |
%Y |
年份 | 2001 |
%z |
ISO 8601 時區相對於 UTC 的偏移量 (1 分鐘 = 1,1 小時 = 100) 如果無法確定時區,則無字元 |
+100 |
%Z |
時區名稱或縮寫* 如果無法確定時區,則無字元 |
CDT |
%% |
百分號 (%) | % |
返回值
未指定。此函式應僅用作流運算子。
錯誤透過修改流的內部狀態標誌來發出訊號:
標誌 | 錯誤 |
---|---|
eofbit | - |
failbit | 函式未能按 fmt 指定的格式化 tmb(如果 sentry 的構造失敗,也可能設定此標誌)。 |
badbit | 流上的插入失敗,或發生其他錯誤(例如,當此函式捕獲內部操作丟擲的異常時)。 設定後,流的完整性可能受到影響。 |
異常
基本保證 − 如果丟擲異常,則物件處於有效狀態。
如果結果錯誤狀態標誌不是 goodbit,並且成員異常被設定為為此狀態丟擲,則它會丟擲一個成員型別為 failure 的異常。
內部操作丟擲的任何異常都會被函式捕獲並處理,並設定 badbit。如果在上次呼叫 exceptions 時設定了 badbit,則該函式會重新丟擲捕獲的異常。
資料競爭
訪問 tmb 指向的物件和 fmt 指向的陣列。
修改插入它的流物件。
對同一流物件的併發訪問可能會導致資料競爭,除非標準流物件 (cout、cerr、clog、wcout、wcerr 和 wclog) 與 stdio 同步(在這種情況下,不會啟動資料競爭,儘管不保證來自多個執行緒的字元的插入順序)。
示例
下面的例子解釋了 put_time 函式。
#include <iostream> #include <iomanip> #include <ctime> #include <chrono> int main () { using std::chrono::system_clock; std::time_t tt = system_clock::to_time_t (system_clock::now()); struct std::tm * ptm = std::localtime(&tt); std::cout << "Now (local time): " << std::put_time(ptm,"%c") << '\n'; return 0; }