C++ string源码

来源:互联网 发布:java 流量统计代码 编辑:程序博客网 时间:2024/06/16 00:28

c和c++的string源代码

//String类源代码//一.C字符串//1. strlen(),计算字符串长度 int strlen(const char string) { int i=0; while(string[i]) i++; return i; }//2. strcpy(), 字符串拷贝. char *strcpy(char *destination, const char *source) { while(*destinaton++=*source++); return (destination-1); }//3. strcat(), 字符串的连接. char *strcat(char *target,const char *source) { char *original=target; while(*target) target++;     // Find the end of the string while(*target++=*source++); return(original); }//4. streql(), 判断两个字符串是否相等. int streql(char *str1,char *str2) { while((*str1==*str2)&&(*str1)) { str1++; str2++; } return((*str1==NULL)&&(*str2==NULL)); }//5. strchr(), 在字符串中查找某个字符. char *strchr(const char *string,int letter) { while((*string!=letter)&(*string)) string++; return (string); }//6. chrcnt(), 计算某个字符在字符串中出现的次数. int chrcnt(const char *string,int letter) { int count=0; while(*string) if(*string==letter)count++; return count; }//7. strcmp(), 判断两个字符串是否相等. int strcmp(const char *str1,const char *str2) { while((*str1==*str2)&&(*str1)) { str1++; str2++; } if((*str1==*str2)&&(!*str1)) //Same strings return o; else if((*str1)&&(!*str2)) //Same but str1 longer return -1; else if((*str2)&&(!*str1)) //Same but str2 longer else return((*str1>*str2)?-1:1); }//二. String类int size(string str){//return the size of a stringint count = 0;while(str[count]){count++;}return count;}bool empty(string str){//check whether a string is empty or notbool empty = false;if(size(str) == 0){empty = true;}return empty;}int find1(string str, char a, int index){//return the index of a specific character begin from the start index//如果index =0,直接初始化i = 0int i = index;while(i < str.size()){if(str[i] == a){break;}i++;}return i;}int find2(string str, char a, int index){//从index起倒着数找a//如果无index,直接初始i = str.size() - 1int i = index;while(i >= 0){if(str[i] == a){break;}i--;}return i;}int find3(string str, string aa){//查一个string, 返回index//若有startindex,则初始化i = startindexint index;for(int i = 0; i < str.size(); i++){if(str[i] == aa[0]){int m = i;int n = 0;bool check = true;for(/*int m = i, int n = 0*/; m < str.size(), n < aa.size(); m++, n++){if(str[m] != aa[n]){check = false;break;}}if(check){index = i;break;}}}return index;}string substring(string str, int index, int length){//return a substring from the startindex//若限制长度,则i < index + lengthstring substring;for(int i = index; i < str.size(); i++){substring.push_back(str[i]);}return substring;}string append(string str, string a){//追加字符串for(int j = 0; j < a.size(); j++){str.push_back(a[j]);}return str;}string erase(string str, int index, int length){string temp;for(int i = 0; i < index; i++){temp.push_back(str[i]);}for(int i = index + length; i < str.size(); i++){temp.push_back(str[i]);}str = temp;return str;}string clear(string str){string temp = "";str = temp;return str;}void pushback(string &str, char a){//append a characterstr = str + a;}string insert(string str, int index, string a){//insert a stringstring result;for(int i = 0; i < index; i++){result.push_back(str[i]);}result += a;for(int i = index; i < str.size(); i++){result.push_back(str[i]);}return result;}int compare(string str, string a){for(int i = 0; i < str.size() && i < a.size(); i++){if(str[i] != a[i]){return str[i] - a[i];}}return 0;}


http://wenku.baidu.com/view/9f8035e9b8f67c1cfad6b869.html

0 0
原创粉丝点击