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

在C++中获取文件大小有多种方法,常用的方式包括使用标准库中的 std::filesystem::file_size 函数(C++17起支持)和通过文件流结合 seekg 与 tellg 进行定位计算。下面分别介绍这两种主流方法。
使用 std::filesystem::file_size 获取文件大小
从 C++17 开始,标准库提供了 filesystem 模块,其中的 file_size 函数可以直接返回指定文件的字节数,使用简单且不易出错。示例代码:
Gaga
曹越团队开发的AI视频生成工具
1151
查看详情
#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
# c++
# ios
# stream
# 字节
# 如何网站推广报告
# 如何优化网站的物理结构
# 绥中抖音seo咨询
# 品牌网站建设的理由
# 怎么自己做网站的优化
# 朔州网站推广好不好用
# 苏州网站建设教材推荐
# 鹤壁seo网站推广工具价格
# 江门推广营销方式
# b2b网站的推广目标
# 相关文章
# 适用于
# 的是
# 如何实现
# 性好
# 配置文件
# 模式下
# 种方法
# 自定义
# 两种
# 标准库
# 常见问题
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
蛙漫移动版在线看 蛙漫手机浏览器直达入口
QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
随机参数递归函数的基准调用次数与时间复杂度探究
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
J*aScript:在map操作中高效处理空数组
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
微博网页版首页入口 微博电脑端官网登录链接
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
妖精动漫免费平台 妖精动漫官网资源观看网址
在Typer应用中优雅地处理和重组任意命令行参数
Python实现多节点属性重叠度分析教程
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
京东单号查询入口_京东快递订单追踪入口
AO3官方镜像站点汇总 AO3同人作品网页版直达链接
网站内容防复制粘贴的实现策略与局限性
Win11网速慢怎么解决 Win11网络设置优化解除限速
天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
在React函数组件中利用原生HTML5进行邮箱地址验证
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
在Runstone环境中高效处理TasteDive API的JSON数据
Lar*el头像管理:图片缩放与旧文件删除的最佳实践
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
163邮箱注册官网 免费申请163个人邮箱
Pandas DataFrame:高效添加条件计算列
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
J*aScript中管理异步API调用:确保操作顺序与数据一致性
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
抖音网页版平台入口 抖音网页版官网在线访问教程
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
J*aScript DOM操作:高效清空列表元素的策略与实践
C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责
win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】
Node.js中HTML按钮与J*aScript函数交互的正确姿势
CSS Box Model与弹性按钮:维持布局稳定的动画实践
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
2026春节假期时间安排 2026春节假日查询
马斯克:Optimus 人形机器人复数形式为 Optimi
Yandex免登录网页版地址 Yandex搜索引擎官方访问入口
AO3中文官网链接_AO3网页版稳定镜像站
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
Python多版本共存与虚拟环境管理深度指南
Win10系统怎么查看已安装更新_Win10卸载有问题的更新补丁
Golang并发任务中错误如何聚合_Golang goroutine error收集方式


2025-12-16
浏览次数:次
返回列表
)调用 file_size,否则会抛异常或返回错误。