注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mister.Hu(巷里人家)

Go abroad!

 
 
 

日志

 
 
关于我

A campus photograph palyer,an enthusiastic reader,a solitary writer,a future traffic engineer.

网易考拉推荐

C++强化【5】  

2015-08-18 17:07:04|  分类: Senior |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实例61stringC风格字符串转换

#include <iostream>

#include <string>

using namespace std;

 

//stringC风格字符串转换

int main()

{

         string str="Hello";

         const char *ch;

         ch=str.c_str();//string转为C风格字符串

         cout<<ch<<endl;

         ch="World";

         str=ch;//C风格字符串转为string

         cout<<str<<endl;

         return 0;

}

注:由于是C++语言,所以将C风格字符串转为string相对而言要简单许多,直接将char型的赋值给String型的即可。相比之下,将string转为C风格字符串的则需要调用string类的成员函数c_str()函数,即ch=str.c_str()

 

实例62:比较两个string字符串

#include <iostream>

#include <string>

using namespace std;

 

//比较两个string字符串

int main()

{

         string str1="Hello";

         string str2="World";

         string str3="Hello";

         int compare_result;

         if(str1!=str2)//方式1

                   cout<<"str1不等于str2"<<endl;

 

         if(bool(str3.compare(str1)))//不相等(方式2

                   cout<<"str1不等于str3"<<endl;

                   cout<<str3.compare(str1)<<endl;

 

         return 0;

}

注:注意与char字符数组进行对比,相比之下,String函数的比较要简单许多,它一共有两种方法,第一是直接用=进行判断,第二是调用函数str3.compare(str1),这个会直接返回一个结果,这个结果与实例57:字符串的比较(strcmp())结果是一样的,分为正负0.

 

实例63:查找string的某个元素

#include <iostream>

#include <string>

using namespace std;

 

//查找string的某个元素

int main()

{

         string str="Hello;;";

         char ch=';';

         cout<<"元素ch位于字符串str的第"<<str.find(ch)<<""<<endl;

         cout<<str.find_first_not_of(ch)<<endl;

         cout<<str.find_first_of(ch)<<endl;

         cout<<str.find_last_not_of(ch)<<endl;

         cout<<str.find_last_of(ch)<<endl;

         cout<<str.rfind(ch)<<endl;//多种方式

        

         return 0;

}

注:本例介绍了一系列的在字符串中查找某个元素的函数。介绍如下:

1find(ch)int find(char c,int post=0);

pos的位置开始从前往后查找字符c在当前字符串中的位置,注意,c必须是char形式的,其次,pos的初始位置是0,而不是1.

2find_first_of(ch)int find_first_of(char c,int pos=0);

pos位置开始从前往后查找字符c在当前字符串中第一次出现的位置。与之对应的是find_first_not_of(ch),表示从pos位置开始从前往后查找字符c在当前字符串中第一个不匹配的字符位置。

3find_last_of(ch)int find_last_of(char c,int pos=npos);

pos位置开始从后往前查找字符c在当前字符串中第一次出现的位置,pos的初始位置为字符串的最后一个。与之对应的是find_ last _not_of(ch)

4rfind(ch):与find_last_of(ch)相同。

例子输出的结果如下:

 实例64:使用成员函数检测string字符串是否非空

#include <iostream>

#include <string>

using namespace std;

 

//使用成员函数检测string字符串是否非空

int main()

{

         string str;

         if(str.empty())//为空

                   cout<<"str为空"<<endl;

         else

                   cout<<"str不为空"<<endl;

         return 0;

}

注意,str.empty()str为空时,返回1.否则,返回0.同时可见,在不对字符串进行赋值时,其为空值。即string str;string str=“”;是一样的。

 

实例65:获取string字符串的长度

#include <iostream>

#include <string>

using namespace std;

 

//获取string字符串的长度

int main()

{

         string str="Hello World";

         int length=0;//长度

         cout<<"str的长度为:"<<str.length()<<endl;

         return 0;

}

注:先引用一下实例56

实例56:获得字符串长度(strlen()

#include <iostream>

using namespace std;

//获得字符串长度(strlen()

int main()

{

         char str[]="HelloWorld";

         cout<<"str的长度为:"<<strlen(str)<<endl;

         return 0;

}

对比之可见,两者运用的函数并不相同,string运用的是length()char运用的是strlen()。注意,空格也算字符串长度。

 

实例66:提取string字符串的子串

#include <iostream>

#include <string>

using namespace std;

 

//提取string字符串的子串

int main()

{

         string str="Hello World";

         string sub_str;

         sub_str=str.substr(0,5);

         cout<<sub_str<<endl;

         return 0;

}

substr(0,5)的意思是,从字符串0位置开始,截取5个长度的字符串。

 

实例67:把两个string字符串相加

#include <iostream>

#include <string>

using namespace std;

 

//把两个string字符串相加

int main()

{

         string str1="I love";

         string str2=" C++";

         string str3="";

         str3=str1+str2;

         cout<<str3<<endl;

         return 0;

}

同样引用一下实例58

实例58:连接两个字符串(strcat())

#include <iostream>

using namespace std;

 

int main()

{

         char str1[100]="Hello";//一定要给str1的大小赋值,否则会越界

         char str2[]=" World";

 

         strcat(str1,str2);

         cout<<str1<<endl;

        

         return 0;

}

对比一下,char使用的是strcat()string使用的是直接+

实例68string字符串与C风格字符串相加

#include <iostream>

#include <string>

using namespace std;

 

//string字符串与C风格字符串相加

int main()

{

         string str="Hello";

         char *ch="World";

         char *ch1="C++";

         string str1="";

         str1=str+ch;

         cout<<str1<<endl;

         str1.append(ch1);

         cout<<str1<<endl;

         return 0;

}

注:将char型字符数组加上指针,则可以直接采用+进行相加了,可参考实例61,其实际上是把char型字符数组转换成string型字符串了。例子中还提供了append()函数,作用是将ch1添加到str1上面:string &append(const char*s);

实际上,将char *ch="World";改为char ch[]="World";经过测试发现也是可以直接相加的,因为char字符数组本身即是指针。可参加下面的例子:实例69 string字符串与单字符相加

#include <iostream>

#include <string>

using namespace std;

 

//string字符串与单字符相加

int main()

{

         string str="I love C++";

         char ch='?';

         string str1="";

         str1=str+ch;

         cout<<str1<<endl;

         return 0;

}

 

实例70string字符串替换

#include <iostream>

#include <string>

using namespace std;

 

//string字符串替换

int main()

{

         string str="Hello World";

         string str2="C++";

         str.replace(6,5,str2);

         cout<<str<<endl;

 

         return 0;

}

str.replace(6,5,str2)的意思是,从str的第6位开始删除其5位字符,并在str的第6位插入str2.注意,str2也可以是char型的字符数组,即,将string str2="C++";替换为char *str2="C++";也是可行的。

  评论这张
 
阅读(22)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016