1. ホーム
  2. c++

[解決済み] C++17でファイルサイズをバイト単位で取得する方法

2023-01-09 05:07:53

質問

特定のオペレーティング システムのために知っておくべき落とし穴はありますか?

重複が多い ( 1 , 2 , 3 , 4 , 5 ) の質問ですが、何十年も前に回答されたものです。これらの問題の多くで非常に高い投票数の回答は、今日では間違っています。

.sxの他の(古いQAからの)メソッド

  • stat.h (ラッパー sprintstatf ), syscall を使用します。

  • tellg() は、定義に従って 位置 しかし バイトとは限らない . 戻り値の型は int .

どのように解決するのですか?

<filesystem> (C++17で追加)を使うと、この は非常にわかりやすい .

#include <cstdint>
#include <filesystem>

// ...

std::uintmax_t size = std::filesystem::file_size("c:\\foo\\bar.txt");


コメントにもあるように、もしこの関数を使ってファイルから何バイト読み込むかを決めようと思っているなら、次のことに注意してください...

...ファイルがあなたによって排他的にオープンされていない限り、そのサイズは、あなたがそれを要求してから、そこからデータを読もうとするまでの間に変更される可能性があります。

- ニコル・ボーラス