• 技术文章 >后端开发 >C#.Net教程

    C++ 中字符串的使用

    黄舟黄舟2017-02-06 13:35:04原创858
    当我们一开始使用C语言来处理字符串的时候,会感觉非常的麻烦。C语言中缺少相应的字符串处理函数,如果想要实现某个字符串功能,只能靠我们自己来实现。但是当来到C++中,字符串的处理就会变得异常简单。今天我们就来学习一下C++中最高频的字符串处理函数。示例代码上传至:https://github.com/chenyufeng1991/CppString。

    首先要引入C++中的字符串头文件:

    #include <string>


    请注意,这里的头文件是没有.h的,否则就成了C语言中的头文件了。

    (1)创建字符串


    创建字符串有好几种构造方式,最典型的方式就是使用复制构造函数,

    string str("chenyufeng",3);  
    cout << str << endl;

    cout 拷贝原先的字符串开头处的3个字符最为最新的字符串。打印结果为che.

    string str2("chenyufeng",2,3);  
    cout << str2 << endl;


    cout 拷贝原先字符串index=2开始处的3个字符最为新的字符串。打印结果为eny。

    // = :字符串赋值  
    str2 = "Robert";  
    cout << str2 << endl;


    同样也可以用直接赋值的方式为某个变量赋值字符串,使用”=“。打印结果为Robert.


    (2)swap:交换两个字符串的值

    // swap:交换两个字符串的值  
      string string1 = "chen";  
       string string2 = "yufeng";  
       swap(string1, string2);  
       cout << "string1 = " << string1 << ";string2 = " << string2 << endl;


    打印结果就已经和原先的字符串的值交换了。


    (3)+,append :添加字符串

    // += ,append:在尾部添加字符串  
       string stringOrigin = "chen";  
        string stringAppend = "yufeng";  
        stringOrigin = stringOrigin + stringAppend;  
        cout << "stringOrigin = " << stringOrigin << endl;  
      
        stringOrigin.append("_OK");  
        cout << "stringOriginAppend = " << stringOrigin << endl;


    注意,添加字符串操作是会修改原先的字符串的。可以直接使用+号进行字符串的添加,非常方便。


    (4)insert:在指定位置插入字符串

    // insert:在指定position插入字符串  
      string stringInsertOrigin = "chenyufeng";  
        stringInsertOrigin.insert(3, "__");  
        cout << "stringInsertOrigin = " << stringInsertOrigin << endl;


    上述代码可以在indx=3位置插入__下划线,打印结果为 che__nyufeng.


    (5)erase,clear删除字符串

    // erase: 删除字符 
      string stringEraseOrigin = "chenyufeng";  
       stringEraseOrigin.erase();  
       cout << "stringEraseOrigin = " << stringEraseOrigin << endl;  
      
      
       // clear :删除全部字符  
      string stringClearOrigin = "chenyufeng";  
       stringClearOrigin.clear();  
       cout << "stringClearOrigin = " << stringClearOrigin << endl;


    上述操作其实都是把字符串清空了。


    (6)replace:替换字符串

    // replace: 替换字符串,某个pos位置开始的size个字符替换成后面的“”字符串  
       string stringReplaceOrigin = "chenyufeng";  
        stringReplaceOrigin.replace(3, 2, "66");  
        cout << "stringReplaceOrigin = " << stringReplaceOrigin << endl;


    上述代码把字符串从index=3开始的2个字符替换成”66“,打印结果为che66ufeng.


    (7)==,, =: 比较字符串大小


    C++中使用这种运算符对字符串进行操作,其实都是用了运算符重载。字符串比较大小是根据字母的字典序或者说是ASCII码值按顺序比较大小。直到比较出两个字符串的不同字母或者比较到某个字符串的最后一位停止。

    // ==,<,>,<=,>=:比较字符串  
      string stringLeft = "zhen";  
       string stringRight = "yufeng";  
       if (stringLeft == stringRight)  
       {  
           cout << "equal" << endl;  
       }  
      
       if (stringLeft != stringRight)  
       {  
           cout << "not equal" << endl;  
       }  
      
       if (stringLeft < stringRight)  
       {  
           cout << "stringLeft < stringRight" << endl;  
       }  
      
       if (stringLeft > stringRight)  
       {  
           cout << "stringLeft > stringRight" << endl;  
       }


    (8)size,length:计算字符串长度


    这里的计算字符串长度和C语言中不同,是不包括末尾的的,计算的是真实的长度。

    // size(), length():计算字符串长度  
       string stringCount = "chenyufeng";  
        cout << "stringSize = " << stringCount.size() << endl;  
        cout << "stringLength = " << stringCount.length() << endl;


    上述的打印结果都是10.


    (9)empty:判断字符串是否为空

    // empty():判断字符串是否为空  
      string stringIsEmpty = "";  
        string stringNotEmpty = "chen";  
        if (stringIsEmpty.empty())  
        {  
            cout << "stringIsEmpty == empty" << endl;  
        }  
        else  
        {  
            cout << "stringIsEmpty != empty" << endl;  
        }  
      
        if (stringNotEmpty.empty())  
        {  
            cout << "stringNotEmpty == empty" << endl;  
        }  
        else  
        {  
            cout << "stringNotEmpty != empty" << endl;  
        }


    (10)字符串的输入输出流

    // 输入输出stream  
      cout << "请输入一个字符串"<<endl;  
        string stringInput;  
        cin >> stringInput;  
        cout << "stringInput = " << stringInput << endl;


    字符串也可以类似于C++其他数据类型一样使用输入输出流。可以使用回车键结束输入流。


    (11)max_size:字符串的最大可容纳量。

    // max_size:  
      string stringMaxSize;  
        cout << "stringMaxSize = " << stringMaxSize.max_size() << endl;


    打印结果为:18446744073709551599 。表示该字符串可以容纳这么多的字符数。


    (12)[], at :元素存取与修改

    // [],at() :元素存取  
      string stringAt = "chenyufeng";  
        cout << "stringAt[3] = " <<stringAt[3] << endl;  
        cout << "stringAt.at(3) = " << stringAt.at(3) << endl;  
      
        stringAt[3] = '6';  
        stringAt.at(5) = '9';  
        cout << "stringAt = " << stringAt << endl;


    字符串可以和数组一样进行操作,使用下标进行存取,并可以进行修改原字符串。


    (13)compare:字符串的比较,返回0,1 ,-1。

    // compare()  
       string stringCompare = "chenyufeng";  
        int aaa = stringCompare.compare("chen"); // > 0  
        int bbb = stringCompare.compare("chenyufeng"); // == 0  
        int ccc = stringCompare.compare("done"); // < 0  
        cout << "aaa = " << aaa << ";bbb = " << bbb << ";ccc = " << ccc << endl;


    (14)substr:取子字符串

    // substr  
       string stringSubstr = "chenyufeng";  
       // 从索引为4开始的3个字符 
        cout << "stringSubstr.substr(4,3) = " << stringSubstr.substr(4,3) << endl;  
      
       // 从索引为4开始的所有字符  
      cout << "stringSubstr.substr(4) = " <<stringSubstr.substr(4) << endl;  
      
       // 整个字符  
      cout << "stringSubstr.substr() = " <<stringSubstr.substr() << endl;


    (15)find:查找某个字符

    // find   
      string stringFind = "chenyufeng";  
        stringFind.find('n');  
        cout << "stringFind.find('n') = " << stringFind.find('n') << endl;  
      
        cout << "stringFind.find_first_of('e') = " << stringFind.find_first_of('e') << endl;  
          
        cout << "stringFind.find_last_of('e') = " << stringFind.find_last_of('e') << endl;

    默认find函数是返回某个字符第一次出现的下标index。find_first_of和find_last_of则分别是第一次和最后一次出现某个字符的index。

    以上就是C++ 中字符串的使用的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    专题推荐:C++,字符串
    上一篇: 从0自学C#13--子类和父类方法的锁对象问题 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 解决asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误• asp.net 图片验证码的HtmlHelper• ASP.NET使用Ajax如何返回Json对象的方法具体介绍• C/C++深度分析• 应用绝对路径与相对路径
    1/1

    PHP中文网