C++string类详解

1.前言

哈喽,欢迎来到C++工作室。今天我们要向大家介绍一种STL容器——字符串

你心中的字符串可能是这样的:

char ch[60];

这个……呃……好吧,这个叫字符数组,这个和字符串的最大区别是这个有限量,字符串几乎没有上线。

而且,字符数组需要用for循环来读入

for(int i=1;i<=10;i++) cin >> ch[i];

而字符串的读入就很自然

string s;//定义字符串s
cin >> s;//读入

是不是简单了不少?

这时,肯定有杠精要说了:唉不带你这样玩的,我们可是有getchar的

getchar?你可别提了!那玩意你觉得能读取数组吗?

2.常用函数

字符串大小:

s.size()

字符串比大小:

C ++字符串支持常见的比较操作符(>,>=,<,<=,==,!=),甚至支持string与C-string的比较(如 str<”hello”)。  
在使用>,>=,<,<=这些操作符的时候是根据“当前字符特性”将字符按字典顺序进行逐一得 比较。字典排序靠前的字符小,  
比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小(前面减后面)
同时,string (“aaaa”) <string(aaaaa)。    


    string A("aBcd");
    string B("Abcd");

    // "aBcd" 和 "Abcd"比较------ a > A
    cout << A > B << endl;                          // 结果:1


上面的代码输出应该是1.

拼接string

string a="dianzan";
string b="guanzhu";
string c;
c=a+b;
cout << c;

上面的代码结果应该是dianzanguanzhu(点赞关注)

find函数

string a="dianzanguanzhu";
string b="guanzhu";
cout << a.find(b);

输出:8   (注意:如果找不到字串返回-1)

erase函数


    string s1 = "123456789";


    // s1.erase(s1.begin()+1);              // 结果:13456789
    // s1.erase(s1.begin()+1,s1.end()-2);   // 结果:189
    s1.erase(1,6);                       // 结果:189
    string::iterator iter = s1.begin();
    while( iter != s1.end() )
    {
        cout<<*iter;
        *iter++;
    }
    cout<<endl;

substring函数:

void test()
{
    string s1("0123456789");
    string s2 = s1.substr(2,5); // 结果:23456-----参数5表示:截取的字符串的长度
    cout<<s2<<endl;
}

sort函数:


void testa()
{
    string s = "cdefba";
    sort(s.begin(),s.end());
    cout<<"s:"<<s<<endl;     // 结果:abcdef
}

replace函数

void testb()
{
    string s1("hello,world!");

    cout<<s1.size()<<endl;                     // 结果:12
    s1.replace(s1.size()-1,1,1,'.');           // 结果:hello,world.

    // 这里的6表示下标  5表示长度
    s1.replace(6,5,"girl");                    // 结果:hello,girl.
    // s1.begin(),s1.begin()+5 是左闭右开区间
    s1.replace(s1.begin(),s1.begin()+5,"boy"); // 结果:boy,girl.
    cout<<s1<<endl;
}

push_back函数 和 insert函数

void  testc()
{
    string s1;

    // 尾插一个字符
    s1.push_back('a');
    s1.push_back('b');
    s1.push_back('c');
    cout<<"s1:"<<s1<<endl; // s1:abc

    // insert(pos,char):在制定的位置pos前插入字符char
    s1.insert(s1.begin(),'1');
    cout<<"s1:"<<s1<<endl; // s1:1abc
}

下面是练习:

1.现在有n个字符串,要输出这n个字符串拼起来

输入样例:                样例输出

3                                helloworld

hel

lo

world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值