C++ string源码
生活随笔
收集整理的這篇文章主要介紹了
C++ string源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
總結
以上是生活随笔為你收集整理的C++ string源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Netbeans学习总结
- 下一篇: CPU模式学习总结