程序运行时产生的数据都属于临时数据,程序结束就会被释放。
通过文件可以可以将数据持久化
c++中对文件操作需要包含头文件fstream
文件的类型分为两种
1.文本文件 文件以文本的ASCII码形式存储在计算机中
2.二进制文件 稳重以文本的二进制形式存储在计算机中 用户一般不能直接读懂
操作文件的三大类
ofstream
ifstream
fstream
写文件
1.包含头文件
#include <fstream>
2.创建对象
ofstream ofs
3.打开文件
ofs.open("path","打开方式")
4.写数据
ofs<<"写入数据"
5.关闭数据
ofs.close()
#include <iostream>
#include <fstream>
using namespace std;
void test65() {ofstream ofs;ofs.open("/Users/king/Documents/cpp/cpplearn/cpplearn/test.txt",ios::out);ofs << "12345677" << endl;ofs.close();}
int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";test65();std::cout << "end!\n";return 0;
}
文件操作必须包含fstream
读文件可以利用ofstream 或者fstream类
打开文件时候需要指定操作文件的路径 以及打开方式
利用<<可与你向文件中写数据
操作完毕需要关闭文件
读文件
1.包含头文件
#include <fstream>
2.创建对象
ofstream ifs
3.打开文件
ifs.open("path","打开方式")
4.读数据
四种读取方式
5.关闭文件
ifs.close();
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void test65() {ofstream ofs;ofs.open("/Users/Documents/cpp/cpplearn/cpplearn/test.txt",ios::out);ofs << "12345677" << endl;ofs.close();}
void test66() {ifstream ifs;ifs.open("/Users/cpp/cpplearn/cpplearn/test.txt",ios::in);if (!ifs.is_open()) {cout << "文件打开失败" << endl;return;}char buf[1024] = {0};// 方式1
// while (ifs >> buf) {
// cout << buf << endl;
// }//2.
// while (ifs.getline(buf, sizeof(buf))) {
// cout << buf << endl;
// }//3.
// string buffer;
// while (getline(ifs, buffer)) {
// cout << buffer << endl;
// }//4. 效率低下char c;while ( (c = ifs.get()) != EOF ) {cout << c << endl;}ifs.close();}
int main(int argc, const char * argv[]) {// insert code here...std::cout << "Hello, World!\n";test65();test66();std::cout << "end!\n";return 0;
}
二进制读写
写
void test67() {ofstream ofs;ofs.open("/Users/xxx/Documents/cpp/cpplearn/cpplearn/test.txt",ios::out | ios::binary);Student1 s = {"王武",18};ofs.write((const char*)&s, sizeof(Student1));ofs.close();
}
读
void test69() {ifstream ifs;ifs.open("/Users/xxx/Documents/cpp/cpplearn/cpplearn/test.txt",ios::in | ios::binary);if (!ifs.is_open()) {std::cout << "is_open, failed!\n";return;}Student1 s;ifs.read((char *)&s, sizeof(Student1));cout << "name=" << s.m_name << "age = " << s.m_age << endl;ifs.close();}