自己项目需要,封装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. 【百奥云GS专栏】全基因组选择之工具篇

    目录 1. 免费开源包/库 1.1 R包 1.2 Python库 2. 成熟软件 3. WEB/GUI工具 前面我们已经介绍了基因组选择的各类模型,今天主要来了解一下做GS有哪些可用的软件和工具.基因 ...

  2. RNA-seq 生物学重复相关性验证

    根据拿到的表达矩阵设为exprSet 1.用scale 进行标准化 数据中心化:数据集中的各个数字减去数据集的均值 数据标准化:中心化之后的数据在除以数据集的标准差. 在R中利用scale方法来对数据 ...

  3. R包 tidyverse 分列

    代码: 1 library(tidyverse) 2 separate(data = df,col=chr_pos,into=c("chr","pos"),se ...

  4. Python3调用C程序(超详解)

    Python3调用C程序(超详解) Python为什么要调用C? 1.要提高代码的运算速度,C比Python快50倍以上 2.对于C语言里很多传统类库,不想用Python重写,想对从内存到文件接口这样 ...

  5. ysoserial-CommonsBeanutils1的shiro无依赖链改造

    ysoserial-CommonsBeanutils1的shiro无依赖链改造 一.CB1利用链分析 此条利用链需要配合Commons-Beanutils组件来进行利用,在shiro中是自带此组件的. ...

  6. vivo 敏感词匹配系统的设计与实践

    一.前言 谛听系统是vivo的内容审核平台,保障了vivo各互联网产品持续健康的发展.谛听支持审核多种内容类型,但日常主要审核的内容是文本,下图是一个完整的文本审核流程,包括名单匹配.敏感词匹配.AI ...

  7. c++基础知识03

    1.嵌套循环案例--九九乘法表 int main() { //利用嵌套循环乘法口诀表 for (int n = 1; n <= 9; n++) { for (int m = 1; m <= ...

  8. 在Idea上用JDBC连接mysql数据库

    一.前言 本次操作建立在idea中java环境已配置的基础上 二.操作步骤 1.建立Web项目后,添加驱动包 mysql-connector-java-5.0.8-bin.jar (1)下载mysql ...

  9. Hadoop入门 常见错误及解决方案

    常见错误及解决方案 目录 常见错误及解决方案 ResourceManager连接失败 root用户和ranan用户两个用户启动集群不统一 不识别主机名 DataNode和NameNode进程同时只能工 ...

  10. 【风控算法】一、变量分箱、WOE和IV值计算

    一.变量分箱 变量分箱常见于逻辑回归评分卡的制作中,在入模前,需要对原始变量值通过分箱映射成woe值.举例来说,如"年龄"这一变量,我们需要找到合适的切分点,将连续的年龄打散到不同 ...