首页 > 后端开发 > C++ > 正文

在C++中如何判断文件是否为空

P粉602998670
发布: 2025-08-31 08:38:01
原创
1032人浏览过
判断C++中文件是否为空可通过检查文件大小是否为0实现:使用std::ifstream以二进制模式打开文件,调用seekg(0, std::ios::end)移动到末尾,再用tellg()获取大小,若为0则文件为空;2. C++17可使用std::filesystem::file_size直接获取文件大小,需包含<filesystem>头文件,注意处理文件不存在或访问失败的异常;3. 判断时应区分文件不存在与文件为空,建议先用fs::exists检查文件存在性,再进行大小判断;4. 推荐使用二进制模式打开文件以避免文本模式下换行符处理带来的大小计算误差。

在c++中如何判断文件是否为空

判断C++中文件是否为空,可以通过检查文件大小是否为0来实现。如果文件存在但没有内容,其大小就是0字节。

使用std::ifstream和文件指针

打开文件后,将文件指针移动到末尾,获取当前位置,即文件的总字节数:

  • std::ifstream
    登录后复制
    以二进制模式打开文件
  • 调用
    seekg(0, std::ios::end)
    登录后复制
    跳转到文件末尾
  • tellg()
    登录后复制
    获取当前读指针位置
  • 位置为0说明文件为空

示例代码:

std::ifstream file("test.txt", std::ios::binary | std::ios::ate);
if (!file.is_open()) {
  std::cout << "无法打开文件\n";
  return false;
}

return file.tellg() == 0;

使用std::filesystem(C++17)

C++17引入了

std::filesystem
登录后复制
,可以直接获取文件大小:

立即学习C++免费学习笔记(深入)”;

Alkaid.art
Alkaid.art

专门为Phtoshop打造的AIGC绘画插件

Alkaid.art 153
查看详情 Alkaid.art
  • 包含头文件
    <filesystem>
    登录后复制
  • 使用
    std::filesystem::file_size(path)
    登录后复制
    获取大小
  • 注意:如果文件不存在或无法访问会抛出异常

示例代码:

#include <filesystem>
namespace fs = std::filesystem;

try {
  if (fs::exists("test.txt")) {
    return fs::file_size("test.txt") == 0;
  } else {
    std::cout << "文件不存在\n";
  }
} catch (...) {
  std::cout << "获取文件大小失败\n";
}

注意事项

判断时要区分“文件不存在”和“文件为空”。建议先确认文件存在再检查大小。如果文件以文本模式打开,某些系统可能对换行符做处理,推荐使用二进制模式避免歧义。

基本上就这些方法,选择取决于你的C++标准和项目需求。

以上就是在C++中如何判断文件是否为空的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号