我们打开文件就要对文件进行读写 下面会列出一些C 文件读写的函数
写操作对应的有:<<、put、write 等,我们来看下他们分别都能实现什么样的写文件功能!
文件的写操作
<<
可以写入文本文件 支持的类型:https://cplusplus.com/reference/ostream/ostream/operator<
put
可以单字符写入文本文件
write
我们要写入的不一定是文本文件 也可能是二进制文件所以我们就不能用文本写入应该会write函数 它支持文本和二进制文本 参数1是要写入的地址 参数2是要写入的长度
文件的读操作
读文本类型/ASCII码类型的文件:>>、get、getline
>>
可以读入文本文件 >>支持的类型详见:http://www.cplusplus.com/referen ... eam/operator>>/
写文件
文本写文件
>> put(单字符写入) 进行写文本文件的操作,具体操作看代码演示
二进制写文件
write 可以向指定地址写入固定字节的数据 可以是二进制 也可以是文本文件
读文件
文本类读文件
可以用getline get >>进行读文本文件的操作,具体操作看代码演示
二进制文本类读文件
具体 read 函数的定义见:http://www.cplusplus.com/reference/istream/istream/read/ 也就是说他从指定的文件中读取数据,读取的数据可以是文本类型的也可以是二进制类型的,其实read也不管你想要读取什么东西,我只管读就是了,把读取到的内容放在第一个参数指针指向的内存中,具体读取的字节数就是靠第二个参数指定。 代码演示:
代码语言:javascript复制#include <fstream>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream fs("hello.txt");
ifstream is("hello.txt");
int data = 12345;
if (is.is_open()||fs.is_open())
{
cout << "file open success" << endl;
}
//写文件
fs << 200<<endl;
fs << 1.25 << endl;
fs << "hello" << endl;
//fs.write((const char*)&data, sizeof(data));
char sz[] = "cvpotato博客";
fs.write(sz, sizeof(sz));
fs.close();
//读文件
/*int temp = 0;
is >> temp;
float tempf = 0.0;
is >> tempf;
char tempsz[100] = { 0 };
is >> tempsz;
char tempbg[100] = { 0 };
is >> tempbg;
char c = is.get();*/
char tempsz[100] = {0};
is.getline(tempsz, 100);
cout << tempsz << endl;
memset(tempsz, 0, 100);
is.getline(tempsz, 100);
cout << tempsz << endl;
memset(tempsz, 0, 100);
is.getline(tempsz, 100);
cout << tempsz << endl;
memset(tempsz, 0, 100);
is.getline(tempsz, 100);
cout << tempsz << endl;
is.close();
}