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

判断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
return false;
}
return file.tellg() == 0;
使用std::filesystem(C++17)
C++17引入了
std::filesystem,可以直接获取文件大小:
立即学习“C++免费学习笔记(深入)”;
一个经典的号码销售网站,操作非常方便。可用于销售手机号码、固话号码,也可以直接修改为QQ销售平台。 程序采用jmail提交订单,如果采用本程序,请先检查空间是否安装jmail组件。 1、管理信息 后台 /admin 用户名 admin 密码 admin888 2、需要设置的信息 宽带安装信息设置 在email.asp文件中找到以下内容修改成正确的信息即可。 strEmail = "
- 包含头文件
- 使用
std::filesystem::file_size(path)
获取大小 - 注意:如果文件不存在或无法访问会抛出异常
示例代码:
#include
namespace fs = std::filesystem;
try {
if (fs::exists("test.txt")) {
return fs::file_size("test.txt") == 0;
} else {
std::cout
}
} catch (...) {
std::cout
}
注意事项
判断时要区分“文件不存在”和“文件为空”。建议先确认文件存在再检查大小。如果文件以文本模式打开,某些系统可能对换行符做处理,推荐使用二进制模式避免歧义。
基本上就这些方法,选择取决于你的C++标准和项目需求。









