是说即使打开一个空文件,你不读取里面的数据,ifs.eof() 会默认置为false
peek() 尝试读取第一个字符,但不提取(光标位不后移)
// char ch;
// ifs >> ch;
ifs.peek();
if (ifs.eof()) {
// 文件为空
cout << "文件为空" << endl;
m_EmpArray = NULL;
m_EmpNum = 0;
this->m_FileIsEmpty = true;
ifs.close();
return;
}
ifstream 回到文件头
使用 ifstream 进行文本文件读取时,如果读指针位于文件末尾,无法直接通过调用seekg(0, ios::beg) 回到文件开头,而是需要先调用 clear() 清除指针状态,再调用seekg(0, ios::beg) 才能成功返回文件头
- ios::beg 默认的,从流的开头开始定位
- ios::cur 从流的当前位置开始定位
- ios::end 从流的末尾开始定位
override
override明确地表示一个函数是对基类中一个虚函数的重载。更重要的是,它会检查基类虚函数和派生类中重载函数的签名不匹配问题。如果签名不匹配,编译器会发出错误信息。
=default
=default
是C++11引入的一种特性,它允许显式要求编译器生成默认的特殊成员函数。特殊成员函数包括默认构造函数、复制构造函数、移动构造函数、复制赋值运算符、移动赋值运算符以及析构函数
参考资料
cplusplus.com/reference/istream/istream/seekg/
Set Position with seekg() in C++ File Handling - GeeksforGeeks
cin输入的类型不匹配造成的死循环CSDN博客
C++-关键字:override(重写)
【#ifndef, #define, 和 #endif】
c++新特性:=default - 知乎 (zhihu.com)