- fstream[meta header]
- std[meta namespace]
- basic_filebuf[meta class]
- function[meta id-type]
- cpp26[meta cpp]
native_handle_type native_handle() const noexcept;処理系定義のネイティブハンドルを取得する。
is_open()がtrueを返すこと
*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
- Clang: 18 [mark verified]
- GCC: 14 [mark verified]
- Visual C++: ??