VC++ エクスプローラーで表示されるようなファイルのサイズ文字列( ex. 280 KB )を作成する方法です。
自分で調べた範囲では見つけられず、しかたなく自作するつもりだったのですが、、ソンケイする大先輩から「こんなのあるよ」と教えて頂きました。
改めて、ありがとうございます。助かります。
そして、見つけるコトすら出来なかった自分が情けないです。。
StrFormatByteSize
Windows のシェルAPI / StrFormatByteSizeXX を使います。
シリーズ的な感じで、
とあるみたいですね。
今回は諸事情があって StrFormatByteSizeW を使いました。
使い方はこんなかんじです。
#include <shlwapi.h>
DWORD dwFileSize = GetFileSize(hFile, NULL);
WCHAR szBuf [32];
StrFormatByteSizeW(dwFileSize, szBuf, 32);
エクスプローラーでの表記とは、ビミョウに違うみたいです。
でも、エクスプローラーの表示自体も、どういう仕様なんだか掴みづらいんですよね。。大体3桁で表示されてるんですけど、たまにもっと細かく出てたりして。。
で、面白いのが、StrFormatByteSizeEx にはオプション設定引数に、
SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT
ってのがあるんです。
マイクロソフトの中でも、つじつま合わせに苦慮してるのかなーとか、勘ぐっちゃいますね。
参考
http://msdn.microsoft.com/ja-jp/library/windows/desktop/bb759975(v=vs.85).aspx