文件操作
#include<iostream>
#include<fstream> //文件读写
using namespace std;
void test()
{
//地址中的斜杠要么写双反斜杠,要么写单正斜杠
char sourceName[] = "C:\\Users\\Polaris\\Desktop\\source.txt"; //源文件地址
char targetName[] = "C:\\Users\\Polaris\\Desktop\\target.txt"; //目标文件地址
ifstream ism(sourceName, ios::in); //打开文件 读
//或者换成下面的写法
//ifstream ism;
//ism.open(fileName, ios::in);
//ofstream osm(targetName, ios::out); //打开文件 写;清空文件内旧的内容,重新写进新的内容
ofstream osm(targetName, ios::out | ios::app); //不清空旧内容,直接添加拷贝
//或者换成下面的写法
//ofstream osm;
//osm.open(targetName, ios::out);
//osm.open(targetName, ios::out | ios::app);
if (!ism)
{
cout << "打开source文件失败!" << endl;
}
if (!ism)
{
cout << "打开target文件失败!" << endl;
}
char ch;
while (ism.get(ch)) //读文件
{
cout << ch;
osm.put(ch); //写文件
}
ism.close(); //关闭文件
osm.close(); //关闭文件
}
int main()
{
test();
return 0;
}
二进制文件读写
#include<iostream>
#include<fstream> //文件读写
using namespace std;
template<class T>
class Person
{
public:
Person() {};
Person(T age, T id) :m_Age(age), m_Id(id) {};
void Show()
{
cout << "Age: " << m_Age << " Id: " << m_Id << endl;
}
public:
T m_Age;
T m_Id;
};
void test()
{
Person<int> p1(10, 20), p2(30, 40); //二进制方式存在
//地址中的斜杠要么写双反斜杠,要么写单正斜杠
char targetName[] = "C:\\Users\\Polaris\\Desktop\\target.txt"; //如果文件不存在会自动创建
ofstream osm(targetName, ios::out | ios::binary);
osm.write((char*)& p1, sizeof(Person<int>)); //二进制方式写文件
osm.write((char*)& p2, sizeof(Person<int>)); //二进制方式写文件
osm.close(); //关闭文件
Person<int> p3, p4;
ifstream ism(targetName, ios::in | ios::binary);
ism.read((char*)& p3, sizeof(Person<int>)); //二进制读文件
ism.read((char*)& p4, sizeof(Person<int>)); //二进制读文件
p3.Show();
p4.Show();
ism.close(); //关闭文件
}
int main()
{
test();
return 0;
}