您的位置:首页 > 运维架构 > Linux

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

2008-08-27 10:46 369 查看
原来构建的一版字符串对象基本能实现面向对象语言中(.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 */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: