C++ string(八)


#include <iostream>
#include <string>
#include <fstream>

const int SIZE = 5;


using namespace std;

void stringTest();
void fileRead();

int main(int argc, const char * argv[]) {
    
    
    stringTest();
//    fileRead();
    
    return 0;
}

void stringTest()
{
    
    char c[] = "asdfghjkl;12345678";
    
    //1、初始化
    string fuck = {'a','b','c'};
    string tt = "sddfs23daa4a442211f";
    string one("dsfsdf3");
    string two(3,'d');      //初始化十个元素,默认值'd'
    string three(one);
    string four;
    string list[SIZE];      //5个长度的string数组
    string listAll;
    
    
    
    //2、赋值
    two = "otiit;";
    three[0] = 'm';
    
    for (int i = 0; i<SIZE; i++) {
        
        getline(cin, list[i]);  //数组逐个元素赋值
        four += list[i];
    }
    cout << "listAll=" << listAll << endl;

    getline(cin,four);          //一次赋值
    cout << four << endl;
    
    cin >> four;                //一次赋值
    cout << four << endl;

    
    
    //3、拼接string
    one += "11";
    four = one+two;

    
    
    //4、截取
    string six(c+2,c+10); //从c+2开始 截取到c+10
    string five(c,3);     //0开始截取三位
    string seven(&tt[3],&tt[6]); //截取第三位到第6位
    string eight(tt,5,12);    //从第5位开始往后截取12位

    
    //5、替换、修改
    three[0] = 'D';
    
    
    
    //6、插入
    string str1="df dd 24t sdf sadffv";
    string str2="agg ssd 34566 ";
    cout << str1.insert(14,str2)<<endl;       //在字符串指定位置前面插入指定字符串
    cout << str1.insert(14,str2,2,9)<<endl;   //在字符串指定位置前面插入指定字符串的子串(从指定索引开始的指定个数的字符)
    cout << str1.insert(14,"bb cao",5)<<endl; //插入指定字符串的前n个字符
    cout << str1.insert(14,6,'*')<<endl;      //插入n个相同字符到字符串中


    
    //7、删除
    cout <<str1.erase(4,5)<<endl;             //删除指定索引开始的指定长度的字符

    
    
    //8、获取字符串分配的内存大小
    string capa("qwertyui123456789,mnbvcxz;;");
    string re;
    re.reserve(50);
    
    cout << "内存 = " << capa.capacity() << endl;
    cout << "请求内存块最小长度 = " << re.capacity() << endl;
    
    
    //9、字符串比较 size
    string aa("asdfgd");
    string bb("asdfg");
    string cc("asdfgs");
    
    if (aa == bb)
    {
        cout << "aa等于bb" << endl;
    }
    if (aa != cc)
    {
        cout << "aa不等于cc" << endl;
    }
    if (aa.size() < cc.size())    //leng 较早版本的string类,size提供STL兼容性
    {
        cout << "aa长度少于cc" << endl;
    }
    
    
    //10、查找字符串,成功返回下标,失败-1
    int pod = 2;
    int n = 1;
    unsigned long zz = aa.find("feea", pod, n); //从字符串的第pod个位置开始,查找 "feea" 的前n个字符组成的字符串
    unsigned long xx = aa.find('d');            //匹配字符串是否包含某字符
    unsigned long kk = aa.find_first_of('f',2);   //从字符串的第pod个位置开始,查找字符首次出现的位置
    
    unsigned long vv = aa.find_last_of('d');    //查找字符最后一次出现的位置
    unsigned long nn = aa.rfind('d');           //查找字符最后一次出现的位置
    
    unsigned long mm = aa.find_first_not_of("ascfg"); //查找第一个不包括在字符串中的字符下标
    unsigned long ll = aa.find_last_not_of("ascfg");  //查找最后一个不包括在字符串中的字符下标
    
}


void fileRead()
{
    using namespace std;
    ifstream fin;
    /**
     qwer:asdf:zxc:1234:
     gfd:jkl:mnb:
    */
    //打开文件
    fin.open("/Users/Apple/Desktop/精华/C++/C++ string(八)/C++ string(八)/test.txt");
    if (!fin.is_open())
    {
        exit(EXIT_FAILURE);
    }
    
    string item;
    while (fin) {
        
        //根据:分隔符获取元素
        getline(fin,item,':');
        cout << item << endl;

    }
    /**打印
     qwer
     asdf
     zxc
     1234
     
     gfd
     jkl
     mnb
     */
    
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值