偷偷拿来记录一下萌新的cs路——day 45 金工实习忙里偷闲学C++
ios::in | 为读文件而打开文件 |
ios::out | 为写文件而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 追加方式写文件 |
ios::trunc | 若文件存在,先删除再创建文件 |
ios::binary | 二进制方式 |
写文件
#include<iostream>
#include<fstream>
using namespace std;
void test01() {
ofstream ofs; // 创建流对象
ofs.open("test.txt",ios::out ); // 写文件
ofs << "好耶" << endl;
ofs << "好耶好耶" << endl;
ofs << "好耶好耶好耶" << endl;
ofs << "好耶好耶好耶好耶" << endl;
ofs.close(); // 关闭文件
}
int main() {
test01();
return 0;
}
txt文件默认创建在cpp所在文件夹
读文件
第一种方法:将读取内容存储至字符串,输出字符串。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void test01() {
ofstream ofs; // 创建流对象
ofs.open("test.txt",ios::trunc ); // 写文件
ofs << "好耶" << endl;
ofs << "好耶好耶" << endl;
ofs << "好耶好耶好耶" << endl;
ofs << "好耶好耶好耶好耶" << endl;
ofs.close();
}
void test02() {
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) { // 判断是否打开成功
cout << "File does not exist. " << endl;
return;
}
string buf;
while (getline(ifs, buf)) {
cout << buf << endl;
}
ifs.close();
}
int main() {
test01();
test02();
return 0;
}
第二种方法:ifs.getline函数
void test02() {
ifstream ifs;
ifs.open("test.txt", ios::in);
if (!ifs.is_open()) {
cout << "File does not exist. " << endl;
return;
}
char buf[1024] = { 0 };
while (ifs.getline(buf,sizeof(buf))) {
cout << buf << endl;
}
ifs.close();
}
第三种方法:
char buf[1024] = { 0 };
while (ifs>>buf) {
cout << buf << endl;
}
第四种方法:一个一个字符读入
char c;
while ((c = ifs.get()) != EOF) { // 读至文件尾
cout << c;
}
运行结果:
二进制写文件
函数原型:ostream& write(const char *buffer, int len);
#include<iostream>
#include<fstream>
using namespace std;
class Person {
public:
char m_Name[64];
int m_Age;
};
void test01() {
ofstream ofs("person.txt", ios::out | ios::binary);
/*ofs.open("person.txt", ios::out | ios::binary);*/
Person p = { "gyf",18 };
ofs.write((const char*)&p, sizeof(Person));
ofs.close();
}
int main() {
test01();
return 0;
}
二进制读文件
函数原型:istream& read (char *buffer, int len)
#include<iostream>
#include<fstream>
using namespace std;
class Person {
public:
char m_Name[64];
int m_Age;
};
void test01() {
// 创建流对象
ifstream ifs;
// 打开文件
ifs.open("person.txt", ios::in | ios::binary);
// 判断文件是否打开成功
if (!ifs.is_open()) {
cout << "File does not exist. " << endl;
}
// 读文件
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "Name: " << p.m_Name << endl;
cout << "Age: " << p.m_Age << endl;
// 关闭文件
ifs.close();
}
int main() {
test01();
return 0;
}
运行结果:
有误之处请大佬指正,非常感谢!