C++如何获取文件大小_C++ file_size函数与seekp定位方法


c++kquote>C++中获取文件大小主要有两种方法:1. 使用C++17的std::filesystem::file_size函数,直接返回文件字节数,简洁安全;2. 通过ifstream结合seekg与tellg,在二进制模式下定位文件末尾获取大小,兼容性好但需手动处理错误。优先推荐第一种方法。

c++如何获取文件大小_c++ file_size函数与seekp定位方法

在C++中获取文件大小有多种方法,常用的方式包括使用标准库中的 std::filesystem::file_size 函数(C++17起支持)和通过文件流结合 seekgtellg 进行定位计算。下面分别介绍这两种主流方法。

使用 std::filesystem::file_size 获取文件大小

从 C++17 开始,标准库提供了 filesystem 模块,其中的 file_size 函数可以直接返回指定文件的字节数,使用简单且不易出错。

示例代码:

Gaga Gaga

曹越团队开发的AI视频生成工具

Gaga 1151 查看详情 Gaga
#include <iostream>
#include <filesystem>
<p>int main() {
const char* filename = "example.txt";
if (std::filesystem::exists(filename)) {
std::uintmax_t size = std::filesystem::file_size(filename);
std::cout << "文件大小: " << size << " 字节" << std::endl;
} else {
std::cout << "文件不存在" << std::endl;
}
return 0;
}
注意:编译时需要启用 C++17 或更高版本,并链接 stdc++fs(部分编译器如 g++ 需添加 -lstdc++fs)。

使用 seekg 和 tellg 通过输入流获取大小

对于不支持 C++17 的环境,可以使用 ifstream 结合 seekg 和 tellg 方法来测量文件大小。基本思路是将读指针移到文件末尾,再用 tellg 获取当前位置,即为文件总长度。

示例代码:

#include <iostream>
#include <fstream>
<p>long getFileSize(const char* filename) {
std::ifstream file(filename, std::ios::binary | std::ios::ate);
if (!file.is_open()) {
return -1; // 打开失败
}
long size = file.tellg();  // 当前位置即文件末尾偏移量
file.close();
return size;
}</p><p>int main() {
long size = getFileSize("example.txt");
if (size != -1) {
std::cout << "文件大小: " << size << " 字节" << std::endl;
} else {
std::cout << "无法打开文件" << std::endl;
}
return 0;
}
关键点说明:
  • 打开文件时使用 std::ios::ate 标志会直接将读指针定位到文件末尾。
  • 使用二进制模式(std::ios::binary)避免文本模式下换行符转换影响大小判断。
  • tellg 返回的是当前读指针的位置,在 ate 模式下就是文件总字节数。

常见问题与注意事项

两种方法各有适用场景:
  • filesystem::file_size 更现代、简洁,适合新项目;但需注意兼容性。
  • 流方式兼容性好,适用于老标准或嵌入式环境,但需手动处理打开失败等情况。
  • 不能对标准输入或其他非普通文件(如设备文件)调用 file_size,否则会抛异常或返回错误。

基本上就这些。选择哪种方式取决于你的编译环境和项目要求。如果条件允许,优先使用 std::filesystem::file_size,代码更清晰安全。

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

以上就是C++如何获取文件大小_C++ file_size函数与seekp定位方法的详细内容,更多请关注其它相关文章!


# ai  # 的是  # 如何实现  # 性好  # 配置文件  # 模式下  # 种方法  # 自定义  # 标准库  # 常见问题  # stream  # ios  # c++  # 字节  # 两种  # 山东网站推广优选乐云seo  # 英文简历模板网站建设  # 江海区关键词seo排名优化  # 佳木斯优化网站价格  # 遵义珍酒厂网站建设招标  # 贵州放心营销推广  # 市场推广营销方案  # 高密宣传型网站建设  # 怎样优化网站品牌设计  # 东营网站优化怎么选  # 相关文章  # 适用于 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: Win10共享文件夹设置方法 Win10局域网文件共享全攻略【教程】  Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧  Dash应用多值文本输入处理与类型转换教程  微信如何设置字体大小_微信字体设置的阅读舒适  房产|直播|视频号怎么认证开通?|直播|需要什么资质?  解决jQuery多计算器输入字段冲突的教程  快递查询,一键速查  PHP使用DOMDocument与XPath精准追加XML元素教程  悟空浏览器网页版在线工具 悟空浏览器网页版在线平台入口  c++中的const关键字用法大全_c++ const正确使用指南  win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】  苹果自助维修计划支持哪些设备机型  网站体验不好=浪费钱:如何提升-用户体验效果差  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  支付宝如何解绑云闪付_支付宝与云闪付账户关联解除方法  铁路12306入口 铁路12306官网版入口登录网址  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  《地下城堡4:骑士与破碎编年史》墓穴挑战125攻略  《暗黑破坏神4》国服回归送狂欢礼包 价值6916元  ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算  动漫之家观看全集库 动漫之家免费资源网地址  谷歌浏览器官方镜像获取方法_谷歌浏览器网页版入口极速直达  背部总是隐隐作痛怎么回事 背痛如何改善  QQ邮箱注册地址 免费获取QQ邮箱账号  电子白板帮助菜单使用指南  植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南  百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法  顺丰快递单号查询寄件人 顺丰寄件人查询入口  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  VS Code中的Tailwind CSS IntelliSense插件使用技巧  《宝可梦大集结》S4冠军之路开始时间介绍  《下一站江湖2》大雪山加入方法  使用jQuery精确检测除指定元素外任意位置的点击事件  《蓝色星原:旅谣》坐骑获取攻略  视频号视频怎么提取文案?提取的文案如何优化与使用?  在Django中动态检查模型关联:一种灵活的解决方案  顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南  优化Google Charts Gauge:在数据库无数据时显示默认值  b站怎么用微信登录_b站微信登录方法  C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用  泰拉瑞亚水晶无法放置问题  盲鳗善于分泌黏液猜猜主要用来做什么  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  J*aScript大数运算_BigInt使用指南  百度网盘网页入口链接分享 百度网盘官网入口网页登录  Excel如何设置动态下拉菜单_Excel表格下拉选项快速方法  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  b站网页版入口 哔哩哔哩官方网站直接进入  抖音号升级成企业资质怎么弄?有什么好处? 

 2025-12-16

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.