`
javasogo
  • 浏览: 1773415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

[原创]linux c 字符串相关处理包装函数

阅读更多
原来构建的一版字符串对象基本能实现面向对象语言中(.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 */
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics