自己项目需要,封装C语言读写文件。 为了兼容低版本的编译器,因为低版本的编译器(比如,Vs2010,Vs2008)他们可能不支持 modern c++。

项目

  • 使用 cmake管理的项目。

  • 可以在 gitee 下载源码

    接口说明

    函数名 功能
    init_ 初始化, 打开文件
    file_ 获取初始化的文件
    is_opened_ 检查文件是否打开
    length_ 返回文件长度,单位:字节
    write_ 写文件,函数有重载
    read_ 读文件,函数有重载
    is_existed_ 检查参数中的文件是否存在
    uninit_ 释放资源,销毁文件读写对象前, 请先调用该函数,避免析构出现异常

    一个使用范例

#include <iostream>
#include <oct_toolkits.h>
void call_file()
{ using namespace oct_toolkits;
using namespace std;
/// 创建文件对象
ifile* pfile = create_ifile_();
if (NULL == pfile)
{
cout << "call_file, pfile = null";
return;
} /// 1.
std::string str_file("C:/game/file_demo/ssr.txt"); /// 下面这样的方式也可以
//std::string str_file("C:\\game\\file_demo\\ssr.txt");
/// ----------------------------------------------------------------------------------------
/// 下面是检查文件是否存在
if (true == pfile->is_existed_(str_file))
{
cout << "文件存在\n\n";
}
else
cout << "文件不存在\n\n"; int ret = 0;
ret = pfile->init_(str_file, kmode_rtp); if (0 != ret)
{
cout << "call file, init != 0, ret=" << ret; pfile = release_ifile_(pfile);
return;
} /// 读取文件长度
cout << "文件长度=" << pfile->length_() << "\n";
cout << "文件是否打开=" << pfile->is_opened_() << "\n";
cout << "文件是=" << pfile->file_(); /// 下面读取文件内容
cout << "\nstring 读取文件------";
std::string str_content;
ret = pfile->read_(str_content);
if (0 != ret)
{
cout << "文件读取失败, ret=" << ret;
}
else
{
cout << "文件内容是" << str_content.c_str() << "\n";
} /// ----------------------------------------------------------------------------------------
///
char arr[20] = { 0 };
cout << "\nchar 读取文件------";
ret = pfile->read_(arr, 20);
if (0 != ret)
{
cout << "文件读取失败, ret=" << ret;
}
else
{
cout << "文件内容是" << arr << "\n";
} /// 下面是写文件
cout << "\n下面是std::string写文件";
std::string str_write("ABCDEFG");
ret = pfile->write_(str_write);
if (0 != ret)
{
cout << "写文件发失败,ret=" << ret << "\n";
}
else
{
cout << "写文加成功, ret=" << ret << "\n";
} cout << "\n\n下面是char 写文件-------";
char arr_write[] = { "0987654321" };
ret = pfile->write_(arr_write, 10);
if (0 != ret)
{
cout << "写文件发失败,ret=" << ret << "\n";
}
else
{
cout << "写文加成功, ret=" << ret << "\n";
} pfile = release_ifile_(pfile);
} int main(int argc, char* argv[], char* env[])
{
call_file(); //system("pause");
return 0;
}

C++封装C语言读写文件的更多相关文章

  1. C语言读写文件

    对文件的读和写是最常用的文件操作.在C语言中提供了多种文件读写的函数: 字符读写函数  :fgetc和fputc 字符串读写函数:fgets和fputs 数据块读写函数:freed和fwrite 格式 ...

  2. 如何用C语言读写文件

    #include "stdio.h"#include <stdlib.h> main(){ FILE *fp1;//定义文件流指针,用于打开读取的文件 FILE *fp ...

  3. 第28月第3天 c语言读写文件

    1. int ConfigIniFile::OpenFile( const char* szFileName ) { FILE *fp; size_t nLen; int nRet; CloseFil ...

  4. go语言读写文件

    package main import ( "fmt" "io/ioutil" "os" ) func main() { filename ...

  5. 「C语言」文件的概念与简单数据流的读写函数

    写完「C语言」单链表/双向链表的建立/遍历/插入/删除 后,如何将内存中的链表信息及时的保存到文件中,又能够及时的从文件中读取出来进行处理,便需要用到”文件“的相关知识点进行文件的输入.输出. 其实, ...

  6. C语言基础文件读写操作

    整理了一份C语言的文件读写件操作代码,测试时打开相应的注释即可. #include <stdio.h> #include <stdlib.h> #include <uni ...

  7. R语言读写中文编码方式

    最近遇到一个很头疼的事,就是 R语言读写中文编码方式.在网上找到了一篇博文,谢谢博主的精彩分享,让我很快解决了问题,在此也分享一下 R语言读写数据的方法很多,这里主要是我在使用read.csv/rea ...

  8. Inno Setup 如何读写文件

    软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...

  9. C#常用IO流与读写文件

    .文件系统 ()文件系统类的介绍 文件操作类大都在System.IO命名空间里.FileSystemInfo类是任何文件系统类的基类:FileInfo与File表示文件系统中的文件:Directory ...

随机推荐

  1. Codeforces 1368H - Breadboard Capacity(最小割+线段树维护矩阵乘法)

    Easy version:Codeforces 题面传送门 & 洛谷题面传送门 Hard version:Codeforces 题面传送门 & 洛谷题面传送门 首先看到这种从某一种颜色 ...

  2. 【GS文献】测序时代植物复杂性状育种之基因组选择

    综述:Genomic Selection in the Era of Next Generation Sequencing for Complex Traits in Plant Breeding 要 ...

  3. KVM原理

    虚拟化是云计算的基础.简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU.内存.IO 硬件资源,但逻辑上虚拟机之间是相互隔离的.物理机我们一般称为宿主机(Host), ...

  4. 浅谈Facebook的服务器架构

    导读:毫无疑问,作为全球最领先的社交网络,Facebook的高性能集群系统承担了海量数据的处理,它的服务器架构一直为业界众人所关注.CSDN博主yanghehong在他自己最新的一篇博客< Fa ...

  5. javaSE高级篇5 — java8新特性详解———更新完毕

    java8新特性 在前面已经见过一些东西了,但是:挖得有坑儿 1.lambda表达式 lambda表达式是jdk1.8引入的全新语法特性 它支持的是:只有单个抽象方法的函数式接口.什么意思? 就是说: ...

  6. 商业创新不能等?用友低代码开发平台YonBuilder为您加速!

    随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...

  7. 学习java 7.3

    学习内容:定义类不需要加static 成员方法在多个对象时是可以共用的,而成员变量不可以共用,多个对象指向一个内存时,改变变量的值,对象所在的类中的变量都会改变 成员变量前加private,成员方法前 ...

  8. accommodate ~ ache

    accommodate The accommodation reflex [反射] (or accommodation-convergence [会聚] reflex) is a reflex act ...

  9. openwrt编译ipk包提示缺少feeds.mk文件

    问题具体表现如下 这个问题困扰了我两个多星期,总算解决了.解决方案如下: 首先,先应该把配置菜单调好. 我的硬件是7620a,要编译的ipk包为helloworld,所以应该使用 make menuc ...

  10. Mysql不锁表备份之Xtrabackup的备份与恢复

    一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...