原来构建的一版字符串对象基本能实现面向对象语言中(.net
java)的一些功能,但是在实际使用过程中发现由于系统没法辨认堆内存还是栈内存(比如传过来一个 char
*,处理函数内内部就无法辨认),所以在处理过程中的内存自动释放就会残生问题,结果就是使用起来很不方便,现在做了一些调整,让大部分函数都能同时对堆
内存又能对栈内存进行处理
头文件定义如下:
/*
* File: strings.h:字符串相关处理函数定义
* Author: netpet
* Flower net server
* 本程序是为一体化web server产品专用设计,具有部分代码为具体产品优化而不代表普遍通用性的特性
* 程序在linux 2.46下调试通过,编辑工具netbeans 6.1 for c
* 联系方式:Email:netpetboy@163.com QQ:51977431
* Created on 2008年5月26日, 下午4:18
*/
#ifndef _STRINGS_H
#define _STRINGS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "arrays.h"
#define DefaultStringSize 14
typedef char * String;
/*
*功能:构建一个String结构体对象,容量为DefaultStringSize
*参数:无
*返回:String对象指针
*/
extern String StringNew(void);
/*
*功能:构建一个String结构体对象,并且将给定的str字符串拷贝给他
* str该字符串既可以是堆内存也可以是栈内存
*参数:要初始化的字符串
*返回:String对象指针
*/
extern String NewString(char * str);
/*
*功能:将str2附加到str1后面,如果容积够不就重新申请,然后改变指针指向
* str1只能之堆内存
*参数:str1:String 对象 str2:新的字符串
*返回:String对象指针
*/
extern String Append(String *str1, char * str2);
/*
*功能:将str字符串插入到str1的position位置,自动调整大小到合适
* str1只能之堆内存
*参数:str1:原始String对象 str:新的要插入的字符串 position:位置index
*返回:String原始对象指针
*/
extern String Insert(String str1,const char * str,int position);
/*
*功能:分割字符串功能,将给定的str按照str1分割,返回一个Array数组
* str既可以是栈内存 也可以是堆内存
*参数:str:要分割的String对象 str1:分割符字符串
*返回:String对象指针
*/
extern Array * Split(char *str,char * str1);
/*
*功能:字符串的替换功能,替换会引起容积的变化,如果新的字符串比原有的多,有可能会申请新内存
* 但是老的内存会自动释放,并将str指针指向新的内存。
*参数:str:原始字符串 olds:要被替换的字符串,news:新的字符串
*返回:String对象指针
*/
extern String Replace(String *str,char * olds,char * news);
/*
*功能:去掉字符串所有的空格,该字符串既可以是堆内存也可以是栈内存
*参数:str:原始字符串
*返回:String对象指针
*/
extern String Trim(char * str);
/*
*功能:去掉字符串左边所有的空格,该字符串既可以是堆内存也可以是栈内存
*参数:str:原始字符串
*返回:String对象指针
*/
extern String TrimLeft(char * str);
/*
*功能:去掉字符串右边所有的空格,该字符串既可以是堆内存也可以是栈内存
*参数:str:原始字符串
*返回:String对象指针
*/
extern String TrimRight(char *str);
/*
*功能:字符串c在str中第一次出现的位置Index
* 该字符串str既可以是堆内存也可以是栈内存
*参数:str:原始字符串 c:要查找的字符串
*返回:位置Index
*/
extern int IndexOf(char *str,char * c);
/*
*功能:字符串c在str中最后一次出现的位置Index
*参数:str:原始字符串 c:要查找的字符串
*返回:位置Index
*/
extern int LastIndexOf(char * str,char * c);
/*
*功能:字符串的容积长度
*参数:str:原始字符串
*返回:容积的大小
*/
extern int Length(String str);
/*
*功能:字符串的长度
*参数:str:原始字符串
*返回:字符串的长度
*/
extern int StringLength(char *str);
/*
*功能:回收字符串
*参数:str:原始字符串
*返回:无
*/
extern void StringFree(String str);
/*
*功能:判断两个字符串是否相等,字符串既可以是栈内存也可以是堆内存
*参数:str1:原始字符串1,str2:原始字符串2
*返回:是否相等
*/
extern int Equal(char *str1,char *str2);
/*功能:截取字符串
* str既可以是栈内存,也可以是堆内存
*参数:str:原始字符串 begin:开始位置索引 end:结束位置索引
*返回:字符串
*/
extern String SubString(char * str,int begin,int end);
#ifdef __cplusplus
}
#endif
#endif /* _STRINGS_H */
分享到:
相关推荐
几个字符串处理函数增强版 常用需求基本都能完成 已经编译成DLL 函数列表 兼容字符和串 void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 ...
C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全
该文档是本人自己整理的C语言中对字符串处理的一些系统api,,有些经常使用,有些不常使用,但是要是能够记住,相信肯定很有帮助
C语言学习-字符串处理函数 strcat(char str1,char str2) strcpy(char str1,char str2) strncpy(char str1,char str2,int n) strcmp(char str1,char str2)//比较两个字符串大小str1>str2返回值>0,str1=str2...
C语言字符串替换函数strrpl支持中文汉字,解决含中文汉字,可能替换错误的情况。支持GBK、GB18030字符串。
C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符串函数大全C语言字符...
还有一点值得引起注意:当你引用 strsafe 系列函数时,原有的 C 语言字符串处理函数都将被自动进行 #undef 处理。这也没问题,因为调试过程中的出错信息将会告诉你哪些函数已经被相应的 strsafe 系列函数取代了。好...
C语言中字符串的处理函数大全, C语言中字符串的处理函数大全.
Linux下常用函数-字符串函数 Linux下常用函数-字符串函数 Linux下常用函数-字符串函数
C语言字符串处理函数整理版本,包含字符串基本操作,字符串类型转换、字符检查、输入输出流、输入输出流分割、异常处理等
下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数)。所有的C语言编译系统中一般都提供这些函数。
包含了很多C语言字符串和数字转换函数,有详细的代码解释和案例
C语言字符串操作函数.docx
Mid Mid(string,start,length) 从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符开始到字符串结尾的字符串 Left Left(string,length) 从string字符串的左边取得length长度...
C语言,C++字符串处理函数,涵盖了不少的字符串处理的算法。
DB2字符串处理 字符串处理 db2 函数
C语言中字符串相关处理函数归总,含bcmp、bcopy、bzero、memccpy等等常见及不常见函数用法说明
用C语言实现常用的字符串哈希函数,比如RSHash、JSHash、PJWHash、FNVHash等
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言...