0

私は Visual Studio C++ の初心者です。CFileDialog を使用して、ユーザー入力からファイル名とファイル パスを取得しています。そして今、プロセスをロードしているプログレスコントロールを使用したいので、ユーザーは入力ファイルのサイズに応じて待機する必要があります。CFileDialog を使用してファイル名とファイル パスを取得しましたが、ユーザー入力ファイル サイズを取得する方法がわかりません。

以下のメソッドを使用していますが、常にゼロを返します。

int FileSize(const char * szFileName)
{
struct stat fileStat;
int err = stat(szFileName, &fileStat);
if (0 != err) 
    return 0;
return fileStat.st_size;
}

ファイルサイズを取得するためのより良い解決策があれば、私に提案してください。

どうもありがとうございます。

4

1 に答える 1

0

それを行うための標準的な移植可能な方法は次のとおりです。

long long sz;   // int would be to small for many files ! 
ifstream ifs(test);
if(!ifs) 
    return 0;   // when file couldn't be opened
ifs.seekg(0, ios::end);   
sz = ifs.tellg();
return sz; 

ネイティブ Windows のアプローチでは、GetFileSize().

ただし、最初にファイルを開かない MFC の代替案を見ると、この SO questionを見ることができます。

于 2015-05-15T08:11:00.840 に答える