文件操作(CRT、C++、WIN API、MFC、linux文件)
发布日期:2021-06-30 12:12:24 浏览次数:2 分类:技术文章

本文共 2251 字,大约阅读时间需要 7 分钟。

一、使用CRT函数文件操作

 

 

二、使用标准C++库 std::fstream

 

 std::string

1)std::string对象内部存储了一个C的字符串,以'\0'结尾的。

2)std::string.c_str() 获取string对象中字符串开始的内存地址,兼容C字符串。

3)std::string.length() 获取字符串的长度。

4)std::string.substr() 获取子字符串。

5)std::string.fine() 子串查找函数。

6)std::string对象为空时std::string str = "" 。str.clear() 清空

三、WIN API

 

 

 

四、使用MFC::CFile

 

五、linux下文件操作

5.1、创建文件

int creat (const char *pathname, mode_t mode);
#include 
using namespace std;#include
#include
#include
int main(){ int fd = creat("./test.txt", 0666); //0666 O_CREAT O_RANDOM|O_SEQUENTIAL|O_NOINHERIT O_RDWR if (fd == -1) { cout << "创建失败!" << endl; } else cout << "创建成功!" << endl; char buf[] = "测试所到...哈哈哈"; write(fd, buf, strlen(buf)); close(fd); return 0;}

 5.2、打开文件

#include 
int open (const char *pathname, int flag);int open (const char *pathname, int flag, mode_t mode);

 5.3、写入文件

ssize_t  write (int fd, const void *buf, size_t count)

   fd:文件描述符

   buf:写入的文件的缓冲区

   count:写入缓冲区数据的大小 

   函数成功返回实际写入的数据的字节数,发生错误返回-1

    实例5.1中 

 5.4、读取文件

ssize_t read (int fd, void *buf, size_t count);

   fd:文件描述符

   buf:读取数据的缓冲区

   count:读取缓冲区的大小 

   函数成功返回实际读取的数据的字节数,最好能将返回值与count作比较,若返回的字节数比要求读取的字节少,则有可能读到了文件尾或者read()被信号中断了读取动作。发生错误返回-1,错误码存入errno中。

  读取文件Demo:

#include 
using namespace std;#include
#include
#include
const int PKG_SIZE = 4096;int main() { int fd = -1; ssize_t size = -1; char buf[PKG_SIZE]{0}; const char *filename = "./test.txt"; fd = open(filename, O_RDONLY); // 只读 if (fd == -1) { cout << "打开文件" << filename << "失败,fd:" << fd << endl; return -1; } else { cout << "打开文件" << filename << "成功,fd:" << fd << endl; } // 循环读取数据,直到文件结尾 while (size) { memset(buf, 0, PKG_SIZE); size = read(fd, buf, PKG_SIZE); if (size == -1) { close(fd); cout << "读取文件" << filename << "错误!"<< endl; return -1; } else { if (size > 0) { cout << "读取了" << size << "字节" << endl; cout << buf << endl; } else { // size=0 cout << "读取了文件结尾处!" << endl; } } } close(fd); return 0;}

 5.5、关闭文件

#include 
int close (int fd);

六、文本文件与二进制文件

       文本文件与二进制文件实际上没有太大的区别,一般文本文件仅用来存储可打印字符(如字母、数字、空格等),文本文件也可以以二进制方式打开,即显示一些数值,如下图:

 

     在Windows API世界里,根本就没有所谓的文本文件的读写函数,所有的缓冲内容访问都是通过char *指针完成的,至于其内容是文本还是二进制,则是应用程序的责任了。

 

转载地址:https://jadeshu.blog.csdn.net/article/details/72420567 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mov指令
下一篇:static

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月27日 03时30分25秒