C++与JAVA之string

前言:因为工作要求,要从C++转java,为了学好java同时回顾对C++的掌握,写下此系列文章,以供自己学习与回顾。
String并非C++和JAVA的内置类型,而是标准库类型,所以在C++中需要包含String头文件,JAVA 则是通过java.lang包中的String类来创建。

特定声明:当C++中用printf输出string时会出错,因为printf输出字符串是针对char *的,换言之,printf只能输出C语言中的内置数据,string不是c语言内置数据。更深入的来说:string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于是&s并非字符串的首地址,而是这个对象的首地址。 

 **一、字符串的创建与初始化**                                   
C++中 string的初始化  
 string s1; 
 1 string s2=s1;
2 string s3="abc"此为拷贝初始化  String s(“abc”);此为直接初始化
3 stirng s4(10,'d');

可以用字符串char a[]={'a','n','v'};给string对象赋值,但输出string对象时会出现乱码。
 Java中string的初始化  
 char a[]={'g','o','o','d'};
 1 String(char a[])
 String s=new String(a);
 2 String(char a[],int offset,int length)
  String s=new String(a,1,2);等价于  String s=new String(“oo”);
  3 String s=“oo”;只有拷贝初始化。
  4 String s1=s;
           **二、字符串对象的比较**

 在C++中可以用==和!=来比较两个字符串是否相同。而 JAVA则不行,它会比较的是二者的地址是否相同。所以要通过成员函数equals()(区分大小写)和equalsIgnoreCase()(不区分大小写)来判断两个字符串内容是否相同。同理,C++可以通过<、>、<=、>=对两个字符串进行比较,而JAVA则通过compareTo()比较两个字符串,若对象大于参数则返回整数,小于返回复数,等于返回0。

**三、字符串的访问**

访问字符串中的某一字符:C++中遍历每个字符for(auto c:str)同时可以通过atr[i]的方式访问字符串中的某一字符;JAVA需要通过成员函数你chatAt(i)来访问。

改变字符串大小写:C++只能遍历每个字符,通过标准库函数逐个改变。JAVA可已通过string成员函数toLowerCase()和toUpperCase()实现

获取字符串长度:C++:str.length()     java:str.length()

字符串查找:找到某字符串首次出现的位置C++:str.find(str1)    java:str.indexOf(str1)

                     找到某字符串最后一次出现的位置C++:str.rfind(str1)    java:str.lastindexOf(str1)

                    同时C++还提供:

find_first_of():在一个目标串中进行查找,返回值是第一个与指定字符组中任何字符匹配的字符位置。如果没有查找到匹配的内容,则返回npos。
           find_last_of():在一个目标串中进行查找,返回最后一个与指定字符组中任何字符匹配的字符位置。如果没有查找到匹配的内容,则返回npos。
           find_first_not_of():在一个目标串中进行查找,返回第一个与指定字符组中任何字符都不匹配的元素位置。如果找不到那样的元素则返回npos。
           find_last_not_of():在一个目标串中进行查找,返回下标值最大的与指定字符组中任何字符都不匹配的元素的位置。若找不到那样的元素则返回npos。

获取子字符串:C++:str.substr(int begin,int length)  

                          Java:(1)str.substring(int beginIndex)从指定位置开始到整个字符串结束的子串

                                   (2)str.substring(int begindex,endindex)从指定位置开始到指定位置结束的子串

字符串替换:C++:string& replace (size_t pos, size_t len, const string& str); string& replace (const_iterator i1,                                                            const_iterator i2, const string& str);

                                 JAVA:str.replace(char oldchar, char newchar)

java还提供以下功能:  (1)判断字符串的开始与结束 str.startsWith()判断当前字符串对象的前缀是否是参数指定的字符串

                                                                                               str.endsWith()判断当前字符串对象的后缀是否是参数指定的字符串

                                      (2)字符串分割:str.split(String sifgn)   str.split(String sign,in limit)第二个增加了分割次数限制。

                                      (3)格式化字符串,str.format(String format,Object...args)  String str=String.format("%d",5)

                                      (4)正则表达式,判断字符是否符合某一格式:str.matches(正则表达式);

                                      (5)字符串生成器:字符串创建成功后,长度是固定的,当通过+进行操作时会创建新的 String实例,因而会极大的增加系统的开销,为此java提供了 StringBuilder类来替代string进行频繁附加字符的操作。该类通过成员函数 toString()输出字符串结果。此类还提供append() 、insert(int offset ,arg) 、delete(int start,int end) 方法。

                                      (6)去除字符串的前导空格和尾部空格:str.trim()

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值