【C++】std::String类型的常用函数

比起C语言用字符数组处理字符串,C++规定了std::String类,操作更加简洁。
下面我将介绍string类型有关的常用函数:
(以下所有测试程序默认已经书写过using namespace std;)


①有关输入的cin>>s和getline(cin,s):

(1)cin>>s如同scanf("%s",s),其特点是只能读取连续的字符串,一旦读入空格就判断为串尾。
(2)getline(xin,s)如同gets(s),其特点是可以读取含空格的字符串,读到回车则结束。
【测试程序片段】:

 	string str1,str2; 
    
    cout<<"write in str1:";
    cin>>str1;    
    cout<<str1<<endl;

    cout<<"write in str2:";
    getline(cin,str2); 
    cout<<str2<<endl;

②有关string类型字符串的初始化:

<注>这里的x表示某个字符。
(1)string s(“xxx”):最基本,直接给定s的内容
(2)string s(n,‘x’):定义的s由n个字符x组成
(3)string s(str,n):定义的s是从字符串str第n位开始直到结束的部分。
(比如str=“ILOVEU”,s(str,3)的结果是s=“VEU”)
(4)string s(&str[a],&str[b]):定义的s是字符串str从str[a]到str[b]部分。
(5)string s(str,a,b):效果同(4)。
【测试程序片段】

 	string stra(20,'&');   
    cout<<stra<<endl;

    string strb("LWCBAKA_DAIHENTAI");
    string s(strb,4);      
    cout<<s<<endl; 

    string strc(&strb[1],&strb[5]);   
    cout<<strc<<endl;

    string strd(strb,1,4);      
    cout<<strd<<endl; 

③重载后的+,+=,=:

(1)str1+str2:表示将str2连接到str1的末位。
(比如str1=“LOVE”,str2=“U”,那么str1+str2=“LOVEU”)
(2)str+=s:即str=str+s,在str的末位衔接字符串s。
(3)str1=str2:表示将str2的字符串复制给str1。这就如同C语言<string.h>中的函数strcpy(str1,str2)。但有所不同的是,str1=str2是完全覆盖。
【测试程序片段】:

	string a("I");
    string b("LOVE");
    string c=a+b;    
    a+=a;           
    cout<<c<<" "<<a<<endl;

    a=b;       
    cout<<a<<endl;

④重载后的逻辑运算符:

重载后的逻辑运算符可以直接比较两个字符串的“大小”(指机器排列序列的位置先后)。就如同<string.h>中的strcmp(str1,str2)函数一样。分别有:str1>str2,str1<str2,str1>=str2,str1<=str2,str1==str2。
【测试程序片段】:

	string x,y;
    getline(cin,x);   getline(cin,y);
    if (x>y)   cout<<"YES"<<endl;   
        else   cout<<"NO"<<endl; 

⑤其他:

(1)字符串长度计算:s.length()或s.size()返回的值是字符串s的串长。
(2)查询子串:即查找字符串中有没有特定的片段。函数有很多种,常用的是s.find(str,n),从s的第n位开始查找是否有str的子片段,如果查找到就返回首个重复的字符的下标,如果查找失败返回string::npos。
【测试程序片段】:

	cout<<x.length()<<endl;    
    cout<<x.size()<<endl;

    cout<<"You want to find:";
    getline(cin,z);
    cout<<x.find(z,0)<<endl; 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值