c++ 读写文件

建立流对象:

    输入文件流类(执行读操作):ifstream  in;

    输出文件流类(执行写操作):ofstream  out;

使用成员函数open打开函数:

 ios::in                       以输入方式打开文件(读操作)

 ios::out        以输出方式打开文件(写操作),如果已经存在此名字的文件夹,则将其原有内容全部清除

 ios::app                    以输入方式打开文件,写入的数据增加至文件末尾

 ios::ate                     打开一个文件,把文件指针移到文件末尾

 ios::binary                 以二进制方式打开一个文件,默认为文本打开方式

如:

ofstream ofile;
ofile.open("zhongju.txt"); //默认为 out 覆盖

读文件:

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,

如果遇到delim或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。

 bool getline(istream &in, string &s)

直到出现以下情况为止:

注意是 string 

•读入了文件结束标志

•读到一个新行(有重载函数可以指定行分隔符,默认是"\n".)

•达到字符串的最大长度

–如果getline没有读入字符,将返回false,可用于判断文件是否结束.

文件指针

seekg()

file.seekg(offset, place)

place :起始位置开始,

      ios::beg 文件头
      ios::end 文件尾
      ios::cur 当前位置

offset:偏移 offset个字节, long int.

file.seekg(0,ios::beg); //让文件指针定位到文件开头 
file.seekg(0,ios::end); //让文件指针定位到文件末尾 
file.seekg(10,ios::cur); //从当前位置向文件末方向移动10个字节 
file.seekg(-10,ios::cur); //让从当前位置向文件开始方向移动10个字节 
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置 

tellg()

tellg 函数不需要带参数,它返回当前定位指针的位置

判断文件是否为空

ifstream ifile;

ifile.open(filepath);//从filepath 中得到题目

ifile.get(); //先读取一个字符
if (ifile.eof()) {
    printf("文件无数独题目题目.\n");
	return 0;
}
ifile.seekg(0, ios::beg);//将文件指针定位到开头
//....后续正常读

错误判断方法: 

good() 如果文件打开成功
bad() 打开文件时发生错误
eof() 到达文件尾 

C++ 中,常用的读写文件的 API 主要有以下几种: 1. fstream 类:C++ 标准库提供的文件读写类,可以用于读写文本文件和二进制文件。它继承自 istream 和 ostream 类,因此可以使用流操作符 << 和 >> 来进行读写操作。示例代码: ```c++ #include <fstream> #include <iostream> int main() { // 写入文件 std::ofstream ofs("example.txt"); ofs << "Hello, world!" << std::endl; ofs.close(); // 读取文件 std::ifstream ifs("example.txt"); std::string line; std::getline(ifs, line); std::cout << line << std::endl; ifs.close(); return 0; } ``` 2. fopen 和 fclose 函数:C 语言标准库提供的文件读写函数,可以用于读写文本文件和二进制文件。需要注意的是,fopen 函数返回的是一个指向 FILE 结构体的指针,需要使用 fclose 函数关闭文件。示例代码: ```c++ #include <stdio.h> int main() { // 写入文件 FILE* fp = fopen("example.txt", "w"); fprintf(fp, "Hello, world!\n"); fclose(fp); // 读取文件 fp = fopen("example.txt", "r"); char buf[1024]; fgets(buf, 1024, fp); printf("%s", buf); fclose(fp); return 0; } ``` 3. read 和 write 函数:C 语言标准库提供的文件读写函数,用于读写二进制文件。read 函数可以读取指定字节数的数据到指定的缓冲区中,write 函数可以将指定字节数的数据从指定的缓冲区中写入到文件中。示例代码: ```c++ #include <fcntl.h> #include <unistd.h> int main() { // 写入文件 int fd = open("example.bin", O_WRONLY | O_CREAT, 0644); char buf[] = {0x01, 0x02, 0x03, 0x04}; write(fd, buf, sizeof(buf)); close(fd); // 读取文件 fd = open("example.bin", O_RDONLY); char buf2[4]; read(fd, buf2, sizeof(buf2)); close(fd); return 0; } ``` 需要注意的是,使用 read 和 write 函数时需要使用 open 函数打开文件,并指定打开方式和权限等参数。而使用 fstream 类和 fopen 函数时,可以通过构造函数或者 fopen 函数的第二个参数来指定打开方式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值