一、freecplus框架介绍

freecplus框架是UNIX平台下C/C++程序开发的业务层基础框架,由C语言技术网组织开发、维护。其目的是为C/C++程序员供免费的、开源的程序库。freecplus框架与C++标准库结合使用,可以极大的提高程序员的开发效率。

freecplus框架的初衷是为C/C++程序员提供功能强大、简单易用的函数和类,把程序员从纷繁复杂的C/C++底层代码中解放出来,程序员将更关注软件功能和业务逻辑的实现。

freecplus框架中采用了第三方的开源库,如ftplib,并对这些库做了封装,形成更简单易用的类库。

在致力开源的C/C++程序员的努力下,freecplus将不断的优化、完善和扩展,希望有更多的优秀程序员加入。

二、freecplus开源许可协议

freecplus开源许可协议正文如下:

版权所有 (c) 2008-2020,码农有道,C语言技术网(www.freecplus.net)。

特此向任何得到本软件副本或相关文档的人授权:被授权人有权使用、复制、修改、合并、出版、发布、散布、再授权和/或贩售软件及软件的副本,及授予被供应人同等权利,只需服从以下义务:

在软件和软件的所有副本中都必须包含以上版权声明和本许可声明。

如果违返,无论在本软件的使用上或其他买卖交易中是否涉及合同,都属于侵权行为,我们保留追究的权利。

freecplus开源许可协议正文结束。

三、freecplus框架内容

按照实现的功能,freecplus框架有12个分类。

1、字符串操作

字符串操作函数和类,包括:

1)安全的字符串复制函数;

2)安全的字符串拼接函数;

3)安全的格式化输出到字符串的函数;

4)删除字符串左边、右边和两边指定字符的函数;

5)字符串大小写转换函数;

6)字符串替换函数;

7)从字符串中提取数字的函数;

8)正则表达式函数;

9)字符串拆分的类;

10) 统计字符串字数的函数。

2、xml解析

从xml格式的字符串中解析出字段。

3、日期时间

1)日期时间的获取、转换和运算;

2)把整数表示的时间转换为字符串表示的时间;

3)把字符串表示的时间转换为整数表示的时间;

4)时间运算;

5)精确到微秒的计时器。

4、目录操作

1)创建目录以及子目录;

2)递归获取目录以及子目录中的文件信息。

5、文件操作

1)打开、读取、删除、重命名、复制文件;

2)获取文件的大小和时间;

3)重置文件的时间;

4)常用的文件操作方法类。

6、日志文件

把C/C++服务程序记录程序运行和数据处理的日志记录到文件中,包括日志文件的创建、切换、备份等。

7、参数文件

加载C/C++服务程序运行参数。

8、tcp网络通信

1)封装了socket系列函数,实现tcp客户端,包括报文的接收和发送;

2)封装了socket系列函数,实现tcp服务端,包括报文的接收和发送;

3)解决了tcp报文粘包的问题;

4)通信可以设置超时机制。

9、ftp客户端

采用ftp协议,实现ftp客户端的常用功能。

10、Oracle数据库操作

封装了OCI(Oracle Call Interface)函数库,实现对Oracle数据库的操作。

11、MySQL数据库操作

封装了MySQL提供的mysqlclient函数库,实现对MySQL数据库的操作。

12、PostgreSQL数据库操作

封装了PostgreSQL提供的pq函数库,实现对PostgreSQL数据库的操作。

四、应用举例

C/C++语言操作数据库是一个技术难点,做过这方面开发程序员深有体会,尤其是Oracle数据库,Pro*C的效率低下,代码冗长,OCI功能强大,但是难以驾驭。在freecplus框架中,把Oracle的OCI函数封装成了connection和sqlstatement两个类,操作Oracle数据库如探囊取物。

以下示例(createtable.cpp)是采用freecplus框架创建表的代码。

/*

* 程序名:createtable.cpp,此程序演示freecplus框架操作Oracle数据库(创建表)。

* 作者:C语言技术网(www.freecplus.net) 日期:20190525

*/

#include "_ooci.h" // freecplus框架操作Oracle的头文件。

int main(int argc,char *argv[])

{

connection conn; // 数据库连接类

// 登录数据库,返回值:0-成功,其它-失败。

// 失败代码在conn.m_cda.rc中,失败描述在conn.m_cda.message中。

if (conn.connecttodb("scott/tiger@snorcl11g_198","Simplified Chinese_China.ZHS16GBK")!=0)

{

printf("connect database failed.\n%s\n",conn.m_cda.message); return -1;

}

sqlstatement stmt(&conn); // 操作SQL语句的对象。

// 准备创建表的SQL语句。

// 超女表girls,超女编号id,超女姓名name,体重weight,报名时间btime,超女说明memo,超女图片pic。

stmt.prepare("\

create table girls(id number(10),\

name varchar2(30),\

weight number(8,2),\

btime date,\

memo clob,\

pic blob,\

primary key (id))");

// prepare方法不需要判断返回值。

// 执行SQL语句,一定要判断返回值,0-成功,其它-失败。

// 失败代码在stmt.m_cda.rc中,失败描述在stmt.m_cda.message中。

if (stmt.execute() != 0)

{

printf("stmt.execute() failed.\n%s\n%s\n",stmt.m_sql,stmt.m_cda.message); return -1;

}

printf("create table girls ok.\n");

}

运行效果

五、文档和下载

本文简单介绍了freecplus框架的基本情况。

更多文档请访问“C语言技术网->freecplus框架”栏目。

源代码下载请访问“C语言技术网->资源下载”栏目。

六、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您联系我们指正,非常感谢!!!

c语言转换字符编码为zhs16gbk,GitHub - veis-lzf/freecplus: freecplus开源框架,包含了数据库操作、socket、ftp服务器等。...相关推荐

  1. Java工具类-转换字符编码

    package common; /***字符串处理公用类 */ public class DealString {/*** 转换字符编码 由"iso-8859-1"西文转换为简体中 ...

  2. RHEL7及CentOS7的语言、字符编码、键盘映射、X11布局设置(localectl)-系统管理(1)...

    这几天在阅读Red Hat Enterprise Linux 7的官方文档,发现了一些比之前有较大改善的系统管理方式,准备用一个系列的文章来分享一下自己的阅读.学习心得.在系统管理指导的开篇就提到了语 ...

  3. python转换字符编码_转:Python常见字符编码及其之间的转换

    一.Python常见字符编码 字符编码的常用种类介绍 第一种:ASCII码 ASCII(American Standard Code for Information Interchange,美国信息交 ...

  4. python转换字符编码_Python常见字符编码间的转换

    学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将 ...

  5. iconv 判断字符编码_php下用iconv函数转换字符编码的问题

    昨天在调试 WAP 网站时发现,在增加了 GB2312 到 UTF-8 转化以后,有些页面显示不正常了--有些页面只有一半的内容,另一半被截掉了.因为被截掉的部分包含了 的后半个标签 ,因此整个页面都 ...

  6. c语言实验--字符编码,费诺编码的C语言实现实验论文.doc

    费诺编码的C语言实现实验论文 #include //头文件 #include #include #define Bmax 10 //最长码长度 #define Smax 20 //数组最大长度 /** ...

  7. iconv 转换字符编码,兼容VC转换

    #ifndef __CHAR_CONVERT_H__ #define __CHAR_CONVERT_H__ #ifdef OS_WINDOWS #include <SDKDDKVer.h> ...

  8. 易语言转换html编码,易语言html转实体源码

    原版:.版本 2 .子程序 Html实体转文本, 文本型, , 把Html实体符号转成正常文本 .参数 字符串, 文本型 .参数 次数, 整数型, 可空 .局部变量 _Dom, 对象 .局部变量 _E ...

  9. 经常逛Github的人才知道的开源框架

    前言 软件开发可以说得上是一个十分繁琐的过程,开源框架本质上是因为现在许多公司为了减少开发所需要的时间所创建的入门框架,开源框架是由项目软件开发的人员所组成的社交网络设计成的软件开发模版,这种框架基本 ...

最新文章

  1. 人脸识别双目摄像头何时同时打开双目
  2. python socket发送组播数据_Python socket 如何实现广播单播切换
  3. thrift使用传输协议TCompactProtocol - xiaoshe的专栏 - 博客频道 - CSDN.NET
  4. Jayrock: JSON and JSON-RPC for .NET
  5. mybatis自动生成mapping和实体
  6. 车萝卜CEO马斌斌:真正自动驾驶的时候你更需要HUD和ARHUD...
  7. 导致解码延时/丢帧的语法元素—H264
  8. springcloud架构特点_董事长挖来一位京东T9架构师,送我们两份微服务文档,实在太香了...
  9. 利用Powergui进行FFT Analysis,信号源为空解决方法
  10. 计算机系统结构名词解释及简答题参考
  11. java nio oio_java面试题NIO与OIO的区别
  12. C语言——循环语句(详解)
  13. MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒
  14. PS cc 2018分享
  15. Python 爬取pexels上无版权美图
  16. 程序员:如何优雅地装逼
  17. win10系统安装与双系统ubuntu深度学习环境配置
  18. 如何查看python安装了哪些模块_Python模块如何安装 并确认模块已经安装好?
  19. 己酸戊酯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. Tools-文库怎么下载方法汇总

热门文章

  1. [python]重新安装pip
  2. udp网络程序-端口问题
  3. tabIndex属性
  4. 湖南人说他美女多,四川人就笑了
  5. 【日本·北海道】云端上的浪…
  6. Python表白代码合集:5种表白代码,找不到对象你来找我,这也太秀了叭
  7. posix消息队列和systemV消息队列
  8. 【知识图谱】国内知识图谱应用概述
  9. padStart ( ) 方法、padEnd ( )方法 的用法
  10. 7-13 说反话-加强版 (12分)(附详细教程)