Skip to content

Latest commit

 

History

History
79 lines (60 loc) · 1.9 KB

File metadata and controls

79 lines (60 loc) · 1.9 KB

native_handle

  • fstream[meta header]
  • std[meta namespace]
  • basic_filebuf[meta class]
  • function[meta id-type]
  • cpp26[meta cpp]
native_handle_type native_handle() const noexcept;

概要

処理系定義のネイティブハンドルを取得する。

事前条件

戻り値

*thisが指すファイルに対するネイティブハンドルを返す。

備考

  • ネイティブハンドルは、ファイルが閉じられると無効になる

// POSIX環境
#include <fstream>
#include <print>
#include <chrono>

#include <sys/types.h>
#include <sys/stat.h>

int main() {
  std::fstream fs("example.txt", std::ios_base::in);
  std::filebuf* buf = fs.rdbuf();

  if (!buf->is_open()) {
    std::println("ファイルを開けなかった");
    return 1;
  }

  // ネイティブハンドルから、POSIXのAPIでファイルの最終更新日時を取得する
  int fd = buf->native_handle();
  struct ::stat s{};
  ::fstat(fd, &s);

  std::chrono::sys_seconds last_modified {std::chrono::seconds(s.st_mtim.tv_sec)};
  std::chrono::zoned_time zoned{"Asia/Tokyo", last_modified};
  std::println("Last modified: {}", zoned);
}
  • native_handle[color ff0000]
  • std::fstream[link /reference/fstream/basic_fstream.md]
  • fs.rdbuf()[link /reference/fstream/basic_fstream/rdbuf.md]
  • buf->is_open()[link is_open.md]
  • std::chrono::sys_seconds[link /reference/chrono/sys_time.md]
  • std::chrono::zoned_time[link /reference/chrono/zoned_time.md]

出力例

Last modified: 2025-05-28 17:56:55 JST

バージョン

言語

  • C++26

処理系

参照