在C++中,ifstream
是一个用于文件输入的类,它位于 <fstream>
头文件中。在类的构造函数中初始化 ifstream
对象可以通过几种不同的方式进行。以下是一些常见的方法:
在类的构造函数中使用成员初始化列表来初始化 ifstream
对象是一种常见且高效的做法。
#include <fstream>
#include <iostream>
class FileReader {
public:
FileReader(const std::string& filename) : file(filename) {
if (!file.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
}
}
~FileReader() {
if (file.is_open()) {
file.close();
}
}
void read() {
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
}
private:
std::ifstream file;
};
int main() {
FileReader reader("example.txt");
reader.read();
return 0;
}
虽然不如成员初始化列表高效,但在构造函数体内初始化 ifstream
对象也是可行的。
#include <fstream>
#include <iostream>
class FileReader {
public:
FileReader(const std::string& filename) {
file.open(filename);
if (!file.is_open()) {
std::cerr << "Failed to open file: " << filename << std::endl;
}
}
~FileReader() {
if (file.is_open()) {
file.close();
}
}
void read() {
std::string line;
while (std::getline(file, line)) {
std::cout << line << std::endl;
}
}
private:
std::ifstream file;
};
int main() {
FileReader reader("example.txt");
reader.read();
return 0;
}
file.eof()
和 file.fail()
检查读取状态。通过以上方法,你可以在类的构造函数中成功初始化 ifstream
对象,并处理常见的文件操作问题。
领取专属 10元无门槛券
手把手带您无忧上云