cpp的STL之string

cpp的STL之string

为什么需要string

1 创建和操作方便
2 不用关心内存分配问题
3 不用考虑内存越界
4 更加丰富的操作 

stl string类

stirng的基本操作

复制,连接 ,查找字符,查找子串,截短
使用模板算法实现反转,大小写转换

使用这些常用的基本操作,大致就够了啊,其他的可以采用上面的方法组合起来得出结果

//
//  main.cpp
//  use_stl_string
//
//  Created by bikang on 16/10/28.
//  Copyright (c) 2016年 bikang. All rights reserved.
//

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

void tstring();

int main(int argc, const char * argv[]) {
    tstring();
    return 0;
}
void tstring(){
    cout << "using string" << endl;


    //string的初始化的方法
    const char *pchar = "hello world";
    //根据字符数组创建
    string str1(pchar);
    cout <<"str1="<<str1 <<endl;
    //根据字符数组创建 只取前3位
    string str2(pchar,3);
     cout <<"str2="<<str2 <<endl;
    //根据string创建
    string str3(str1);
    cout <<"str3="<<str3 <<endl;
    //填充创建
    string str4(5,'a');
    cout <<"str4="<<str4 <<endl;

    //访问string的两种方法
    //1 根据长度访问
    for(size_t i=0;i<str1.length();i++) cout << str1[i] <<",";
    cout << endl;
    //2 根据迭代器访问
    string::const_iterator iter1;
    for(iter1=str1.begin();iter1!=str1.end();++iter1){
        cout << *iter1 <<",";
    }
    cout << endl;

    //转换成c风格的字符串
    const char *cstr1 = str1.c_str();
    cout << cstr1 << endl;

    //连接
    cout<< str1 + " "+ str2 <<endl;

    string find_str = str1 + str2;

    //查找,字符或者子串
    cout << "find_str="<< find_str << endl;
    string to_find = "hel";
    size_t pos1 = find_str.find(to_find,0);
    size_t to_find_len = to_find.length();
    while (pos1 != string::npos) {
        cout << pos1<<",";
        size_t nextPos = pos1+to_find_len;
        pos1 = find_str.find(to_find,nextPos);
    }
    cout << endl;

    //截断字符串
    //移除给定位置和指定数量的
    cout << "find_str="<< find_str << endl;
    find_str.erase(1, 3);
    cout << "find_str="<< find_str << endl;

    size_t pos3 = find_str.find('o');
    find_str.erase(pos3,1);
    cout << "find_str="<< find_str << endl;

    find_str.erase(find_str.begin(),find_str.end());
    cout << "find_str_count="<< find_str.length()<<endl;

    //反转
    reverse(str1.begin(),str1.end());
    cout << "str1="<< str1 << endl;

    //大小写转换
    str2 = "abc";
    string str5 = "";
    cout << "str2="<< str2<< endl;
    transform(str2.begin(), str2.end(), str2.begin(), (int(*)(int))toupper);
    cout << "str2="<< str2<< endl;
    transform(str2.begin(), str2.end(), str2.begin(), (int(*)(int))tolower);
    cout << "str2="<< str2<< endl;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值