C++获取文件大小的常用技巧分享

2025-01-01 23:59:09   小编

C++获取文件大小的常用技巧分享

在C++编程中,经常会遇到需要获取文件大小的情况,比如在文件处理、数据存储等应用场景中。下面将为大家分享几种C++中获取文件大小的常用技巧。

方法一:使用stat结构体

在C++中,可以利用<sys/stat.h>头文件中的stat函数来获取文件的详细信息,其中就包括文件大小。示例代码如下:

#include <iostream>
#include <sys/stat.h>

int main() {
    struct stat fileStat;
    const char* filePath = "example.txt";

    if (stat(filePath, &fileStat) == 0) {
        std::cout << "文件大小: " << fileStat.st_size << " 字节" << std::endl;
    } else {
        std::cerr << "获取文件大小失败" << std::endl;
    }

    return 0;
}

这种方法适用于大多数Unix-like系统和Windows系统。

方法二:使用fseek和ftell函数(针对文件流)

当通过文件流操作文件时,可以结合fseekftell函数来获取文件大小。示例代码如下:

#include <iostream>
#include <cstdio>

int main() {
    FILE* file = fopen("example.txt", "rb");
    if (file!= NULL) {
        fseek(file, 0, SEEK_END);
        long fileSize = ftell(file);
        fclose(file);
        std::cout << "文件大小: " << fileSize << " 字节" << std::endl;
    } else {
        std::cerr << "打开文件失败" << std::endl;
    }

    return 0;
}

这种方法主要用于以C风格的文件流方式操作文件。

方法三:使用C++标准库的文件流

在C++标准库中,也可以通过ifstream来获取文件大小。示例代码如下:

#include <iostream>
#include <fstream>

int main() {
    std::ifstream file("example.txt", std::ios::binary | std::ios::ate);
    if (file.is_open()) {
        std::streampos fileSize = file.tellg();
        std::cout << "文件大小: " << fileSize << " 字节" << std::endl;
        file.close();
    } else {
        std::cerr << "打开文件失败" << std::endl;
    }

    return 0;
}

不同的方法适用于不同的场景,开发者可以根据实际需求选择合适的方式来获取文件大小,以提高程序的效率和可维护性。

TAGS: C++ C++文件操作 获取技巧 文件大小

欢迎使用万千站长工具!

Welcome to www.zzTool.com