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

c++之std::get_time和std::put_time

 更新時(shí)間:2024年10月04日 10:35:36   作者:桐葉巖  
std::get_time和std::put_time是C++中用于日期和時(shí)間的格式化和解析的函數(shù),它們都包含在<iomanip>頭文件中,std::get_time用于從輸入流中解析日期時(shí)間字符串,而std::put_time則用于將std::tm結(jié)構(gòu)格式化為字符串

std::get_time和std::put_time

在 C++ 中,std::get_time 和 std::put_time 是處理日期和時(shí)間格式化的兩個(gè)實(shí)用函數(shù)。它們提供了一種簡單的方法來解析和格式化日期時(shí)間字符串。它們都屬于<iomanip>頭文件。

它們是 std::istream 和 std::ostream 的操作符,因此,它們沒有傳統(tǒng)意義上的構(gòu)造函數(shù)。它們用于格式化和解析日期時(shí)間,但本身并不涉及直接創(chuàng)建對象。

std::get_time

std::get_time 是一個(gè)流操作符,用于從流中解析日期時(shí)間字符串。

它實(shí)際上是一個(gè)函數(shù)模板,定義在 頭文件中。

template<typename CharT, typename Traits>
std::basic_istream<CharT, Traits>& get_time(std::basic_istream<CharT, Traits>& is, std::tm* t, const CharT* fmt);
  • is: 輸入流(例如 std::istringstream)。
  • t: std::tm 結(jié)構(gòu)的指針,用于存儲(chǔ)解析后的日期時(shí)間。
  • fmt: 日期時(shí)間格式字符串,用于指定如何解析輸入字符串。

用法

#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>

int main() {
    std::string datetime_str = "2024-08-14 15:30:00";
    std::tm tm = {};
    std::istringstream ss(datetime_str);

    // 解析日期和時(shí)間
    ss >> std::get_time(&tm, "%Y-%m-%d %H:%M:%S");

    if (ss.fail()) {
        std::cerr << "Error parsing date and time" << std::endl;
        return 1;
    }

    // 輸出解析結(jié)果
    std::cout << "Year: " << tm.tm_year + 1900 << std::endl;
    std::cout << "Month: " << tm.tm_mon + 1 << std::endl;
    std::cout << "Day: " << tm.tm_mday << std::endl;
    std::cout << "Hour: " << tm.tm_hour << std::endl;
    std::cout << "Minute: " << tm.tm_min << std::endl;
    std::cout << "Second: " << tm.tm_sec << std::endl;

    return 0;
}
  • std::get_time(&tm, “%Y-%m-%d %H:%M:%S”):解析 datetime_str 字符串,并將結(jié)果填充到 std::tm 結(jié)構(gòu)中。格式字符串 “%Y-%m-%d %H:%M:%S” 說明了輸入字符串的日期時(shí)間格式。
  • tm.tm_year:存儲(chǔ)的是從1900年開始的年份,所以需要加上1900才能得到實(shí)際年份。
  • tm.tm_mon:存儲(chǔ)的是從0開始的月份,所以需要加上1才能得到實(shí)際月份。

std::put_time

std::put_time 是另一個(gè)流操作符,用于將 std::tm 結(jié)構(gòu)格式化為字符串。

它也是一個(gè)函數(shù)模板,定義在 頭文件中。

template<typename CharT, typename Traits>
std::basic_ostream<CharT, Traits>& put_time(std::basic_ostream<CharT, Traits>& os, const std::tm* t, const CharT* fmt);
  • os: 輸出流(例如 std::ostringstream)。
  • t: 指向 std::tm 結(jié)構(gòu)的指針,用于格式化日期時(shí)間。
  • fmt: 日期時(shí)間格式字符串,用于指定輸出的格式。

用法

#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>

int main() {
    std::tm tm = {};
    tm.tm_year = 2024 - 1900; // 年份從1900年開始
    tm.tm_mon = 8 - 1; // 月份從0開始
    tm.tm_mday = 14;
    tm.tm_hour = 15;
    tm.tm_min = 30;
    tm.tm_sec = 0;

    std::ostringstream ss;

    ss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S");

    std::cout << "Formatted date and time: " << ss.str() << std::endl;

    return 0;
}
  • std::put_time(&tm, “%Y-%m-%d %H:%M:%S”):將 std::tm 結(jié)構(gòu)中的日期時(shí)間信息格式化為字符串,格式為 “%Y-%m-%d %H:%M:%S”。
  • ss.str():獲取格式化后的日期時(shí)間字符串。

這兩個(gè)操作符分別用于日期時(shí)間的解析和格式化,但它們并不涉及直接創(chuàng)建對象的構(gòu)造函數(shù)。它們是 C++ 標(biāo)準(zhǔn)庫提供的流操作功能,通過流操作符來處理日期和時(shí)間。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論