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源码相关推荐

  1. Java源码详解四:String源码分析--openjdk java 11源码

    文章目录 注释 类的继承 数据的存储 构造函数 charAt函数 equals函数 hashCode函数 indexOf函数 intern函数 本系列是Java详解,专栏地址:Java源码分析 Str ...

  2. 程序兵法:Java String 源码的排序算法(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...

  3. 【JAVA】String源码浅谈

    String源码浅谈 String这个类可以说是我们使用得最为频繁的类之一了,前几次去面试,都被问到String的底层源码,回答得都不是很好,今天就来谈谈一下String的源码. 一.String类 ...

  4. java基础进阶一:String源码和String常量池

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8046564.html 邮箱:moyi@moyib ...

  5. Java - String源码解析及常见面试问题

    文章目录 Pre Q1: String 是如何实现的? Q2: String 有哪些重要的方法? 构造函数 equals() compareTo() [equals() vs compareTo() ...

  6. String源码分析

    最近开始阅读java底层的源码,是因为发现越到后面越发现读源码的重要性,真的很重要,不阅读源码,你会发现"路"越走越窄. 今天看到了String的这个构造方法, /*** Init ...

  7. java的map 使用string数组多了双引号_奥奥奥利给!!!再也不怕面试官问我String源码了!来吧...

    简述 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了String 类来创建和操作字符串.字符串缓冲区支持可变字符串.因为String对象是不可变的,因此可以共享 ...

  8. String源码解析

    本章源码分析基于JDK1.7 实现的接口 String类被final修饰词修饰,代表不可修改的特性,它实现了三个接口,Serializable是序列化接口,Compareble是排序接口,Char是字 ...

  9. 从 重复叠加字符串匹配 看Java String源码中的contains方法

    原题:重复叠加字符串匹配 解题思路已经写在代码中了: class Solution {public:bool contain(string &a, string &b, long lo ...

  10. String源码分析,中高级Java开发面试题

    空参构造 public String() {this.value = "".value;} 解析 String str=new String("abc");1. ...

最新文章

  1. HashMap和HashSet原理及底层实现
  2. 粽子也内卷?2021 互联网大厂端午礼盒大盘点
  3. nginx安装-添加MP4播放模块
  4. Linux chmod给文件加执行X权限
  5. matlab中对伺服电机,基于Matlab的伺服电机Modbus通讯研究
  6. python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)
  7. 1090 Highest Price in Supply Chain(甲级)
  8. JVM系列一:Java虚拟机与操作系统结构比较
  9. 前端基础-git(二):轻松搞定git创建仓库,操作仓库内容
  10. (17)FPGA速度和面积互换原则
  11. java适合做平台_java不适合做单机web管理平台的2大因素
  12. 闭合导线计算软件excel_测量坐标计算程序 V6
  13. 【笔试/面试】—— 数组中第二大的数
  14. 172篇文献:NUS颜水成等发布首篇《深度长尾学习》综述
  15. 郎文词根mdx_欧陆词典导入mdx_欧路词典导入音频
  16. 计算机科学自考本科的科目,自考本科计算机专业考哪些
  17. NVR宇视云通过免注册功能添加之后如何让已经用APP添加过设备的人停止观看?
  18. 【源码分享】-c++界面源代码分享
  19. windows10 中微信(UWP)版本不显示通知消息
  20. Python爬虫实现无限刷不背单词app的酷币!很有意思!

热门文章

  1. python中如何打开csv文件_在Python中从CSV文件读取数据
  2. Windows 技术篇 - 退出s模式解决surface无法安装和使用第三方应用问题:于安全和性能的考虑,此Windows模式只运行经Microsoft验证的应用
  3. Python 技术篇-通过pip命令下载python库到指定位置不用安装方法,查看pip下载库的源码实例演示,pip命令大全
  4. C++ leetcode 5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
  5. http请求 get 与 post 区别
  6. ubuntu16.04分区
  7. 项目安排[动态规划]
  8. tuple object is not callable解决方案
  9. python3 替换字符串中指定位置字符
  10. 8.依赖的传递、排除、冲突