一、打开文件
C++的ifstream可用于读取文件内容,首先需要打开文件。
使用ifstream对象的open()函数打开文件,如果文件不存在,则会创建该文件,如果文件存在,则会打开该文件,同时覆盖文件原有内容。
#include#include using namespace std; int main() { string filename = "example.txt"; ifstream ifs; ifs.open(filename); if(!ifs.is_open()) { cout << "打开文件失败" << endl; return 0; } // 文件读取代码 ifs.close(); return 0; }
在打开文件之后,需要使用流提取运算符“>>”读取文件中的内容。
二、读取文件内容
使用流提取运算符“>>”读取文件中的内容,每次读取一行。
#include#include using namespace std; int main() { string filename = "example.txt"; ifstream ifs; ifs.open(filename); if(!ifs.is_open()) { cout << "打开文件失败" << endl; return 0; } string line; while(getline(ifs,line)) { cout << line << endl; } ifs.close(); return 0; }
使用getline()函数读取文件中的一行,当读到文件结尾或者读取错误时,getline()函数返回false,循环结束。
三、读取文件中的数字
使用流提取运算符“>>”比较简单,但读取文件中的数字需要注意,需要使用C++提供的字符串转数字函数stoi()。
#include#include using namespace std; int main() { string filename = "example.txt"; ifstream ifs; ifs.open(filename); if(!ifs.is_open()) { cout << "打开文件失败" << endl; return 0; } string line; while(getline(ifs,line)) { int num = stoi(line); cout << num << endl; } ifs.close(); return 0; }
四、逐个字符读取文件内容
可以使用流提取运算符“>>”逐个读取文件中的字符。
#include#include using namespace std; int main() { string filename = "example.txt"; ifstream ifs; ifs.open(filename); if(!ifs.is_open()) { cout << "打开文件失败" << endl; return 0; } char c; while(ifs >> c) { cout << c; } ifs.close(); return 0; }
这段代码会将文件中的每个字符都读取并输出,但只能读取文本文件,不能读取二进制文件。
五、二进制文件的读取
对于二进制文件的读取,可以使用read()函数从流中读取一定数量的字节。
#include#include using namespace std; int main() { string filename = "example.bin"; ifstream ifs; ifs.open(filename, ios::binary | ios::in); if(!ifs.is_open()) { cout << "打开文件失败" << endl; return 0; } char data[100]; ifs.read(data, 100); ifs.close(); return 0; }
ios::binary标志表示打开文件为二进制文件。
六、总结
使用C++的ifstream可以简单地读取一个文件的内容,可以按行读取、逐个字符读取、读取二进制文件等。需要注意的是,不同类型的文件需要不同的读取方式。