如何在 C++ x64 中找到文件大小?

问题描述 投票:0回答:1

我一直在使用这个 C++ 函数来获取 5 GB 大文本文件的文件大小:

_int64 FileSize(const wchar_t* name)
{
    WIN32_FILE_ATTRIBUTE_DATA fad;
    if (!GetFileAttributesEx(name, GetFileExInfoStandard, &fad))
        return -1; // error condition, could call GetLastError to find out more
    LARGE_INTEGER size;
    size.HighPart = fad.nFileSizeHigh;
    size.LowPart = fad.nFileSizeLow;
    return size.QuadPart;
}

5 年前,这在 Visual Studio x64 中运行良好。最近的 Visual Studio 更新后,它停止工作。怎么解决?

我尝试使用

_stat64()
函数,但在将
wchar_t*
转换为
char*
时遇到问题:

_int64 FileSize(const wchar_t* name) {
    struct _stat64i32 buf;
    int result;
    char timebuf[26];
    //char* filename = "crt_stat.c";
    errno_t err;

    result = _wstat64(name, &buf);
    return buf.st_size;
}

但我收到此错误:

“_stat64i32 *”类型的参数与“_stat64 *”类型的参数不兼容。

c++ windows winapi
1个回答
0
投票

在第一个代码中,您正在调用

TCHAR
GetFileAttributesEx()
版本,这取决于项目的字符编码设置。需要将其设置为 Unicode 才能接受
wchar_t
字符串。为了避免这种情况,请直接使用
GetFileAttributesExW()

在第二个代码中,

_wstat64()
需要
struct __stat64
而不是
struct _stat64i32

© www.soinside.com 2019 - 2024. All rights reserved.