赞
踩
C++中输入输出是通过流对象进行操作,对于文件来说写文件就是将内容从程序输出到文件,需要用到写文件流ofstream;而读文件就是将内容从文件输入到程序,需要用到读文件流ifstream;这两个文件流类都包含在头文件<fstream>中,对文件操作需要包含<fstream>。
文本文件写入主要包括以下步骤:
- #include<iostream>
- #include<fstream>
- using namespace std;
-
- int main(int argc, char const *argv[]) {
- ofstream ofs;
- ofs.open("test.txt", ios::out);
- ofs << "姓名:张三" << endl;
- ofs << "年龄:20" << endl;
- ofs.close();
- return 0;
- }
打开方式 | 描述 |
ios::in | 读取方式打开文件。若文件不存在打开失败 |
ios::out | 写入方式打开文件。若文件存在,清空后写入;文件不存在,创建后写入 |
ios::ate | 初始位置:文件末尾。单独使用或和ios::out合用没有区别:清空后写入或创建后写入;和ios::in合用,若文件存在末尾可写入,若文件不存在打开失败 |
ios::app | 末尾追加。单独使用或和ios::out/in合用没有区别:文件不存在时创建写入,存在时末尾追加; |
ios::trunc (截断) | 单独或者和out合用与out无明显差别,文件存在清空后写入,不存在,创建写入; |
ios::binary | 以二进制方式写入或读取文件 |
对于ate和trunc一直get不到使用场景,不太理解。
- #include<iostream>
- #include<fstream>
- using namespace std;
- #include<string>
- //写文件
- void write() {
- ofstream ofs("test.txt", ios::out);
- if (ofs.is_open()) {
- ofs << "姓名:张三" << endl;
- ofs << "年龄:20" << endl;
- ofs.close();
- }
- }
- //方法1
- void func(ifstream& ifs, char buf1[1024], string buf2) {
- //while (ifs >> buf1) {
- // cout << buf1 << endl;
- //}
- while (ifs >> buf2) {
- cout << buf2 << endl;
- }
- }
- //方法2
- void func(ifstream& ifs, char buf1[1024]) {
- while (ifs.getline(buf1, 1024)){
- cout << buf1 << endl;
- }
- }
- //方法3
- void func(ifstream& ifs, string& buf2) {
- while (getline(ifs, buf2)) {
- cout << buf2 << endl;
- }
- }
- //方法4
- void func(ifstream& ifs, char c) {
- while (ifs.get(c)) {
- cout << c;
- }
- }
- void doWork(char buf1[1024], string& buf2, char c ) {
- ifstream ifs("test.txt", ios::in);
- if (ifs.is_open()) {
- if (c == 1) {
- func(ifs, buf1, buf2);
- }else if (c == 2) {
- func(ifs, buf1);
- }
- else if (c == 3) {
- func(ifs, buf2);
- }
- else if (c == 4) {
- func(ifs, c);
- }
-
- ifs.close();
- }
- }
- int main(int argc, char const *argv[]) {
- char buf1[1024];
- string buf2;
- char c;
- write();
- doWork(buf1, buf2, 1);
- doWork(buf1, buf2, 2);
- doWork(buf1, buf2, 3);
- doWork(buf1, buf2, 4);
- return 0;
- }
具体步骤:
具体步骤:
- #include<iostream>
- using namespace std;
- #include<fstream>
- #include<string>
- class Person {
- public:
- string m_Name;
- int m_Age;
- };
- void write(void) {
- Person p = { "李四",21 };
-
- ofstream ofs("test.dat", ios::binary | ios::out);
- if (ofs.is_open()) {
- ofs.write((char*)&p, sizeof(p));
- ofs.close();
- }
- }
- void read(void) {
- Person p;
- ifstream ifs("test.dat", ios::binary | ios::in);
- if (ifs.is_open()) {
- ifs.read((char*)&p, sizeof(p));
- ifs.close();
- }
- cout << "姓名:" << p.m_Name << endl;
- cout << "年龄:" << p.m_Age << endl;
- }
- void test(void) {
- write();
- read();
- }
- int main(int argc, char const** argv) {
- test();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。