zoukankan      html  css  js  c++  java
  • string基本字符系列容器(一)

      由于C语言中只提供了一个char类型用来处理字符,对于字符串的处理,我们往往都是通过字符数组来处理的,这有些时候还是很不方便的。

    其实vector<char>就和char类型的数组很像,vector<string>就是字符串类型的数组了。

     

    1.1 创建一个string类型的对象

      下面的代码创建了一个字符串对象s,且s是一个空串,他的长度是0, 对于string来说,可以同时用s.length()和s.size()来求长度

    # include<iostream>
    # include<string>
    
    using namespace std;
    
    int main(void)
    {
        string s;
        cout<<s.length()<<endl;
        cout<<s.size()<<endl;
    
        return 0;
    }

    1.2 给string对象赋值

      给string赋值有两种方式,一种是直接给string来赋值,另外一种是把字符串指针赋值给一个字符串对象.

      1)代码:

    # include<iostream>
    # include<string>
    
    using namespace std;
    
    int main(void)
    {
        string s;
        s = "Hello,C++STL";
        cout<<s<<endl;
        return 0;
    }

    2)更常用的方法是把字符串指针赋值给一个字符串对象.

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string ss;
        char s[MAX];
        scanf("%s",s);
        ss = s;
        cout<<ss<<endl;
    
    
        return 0;
    }

    2.3 从string对象的尾部添加字符

      在string对象的尾部添加一个字符(char),采用"+"操作即可,具体应用如下:

      

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s+='a';
        s+='b';
        s+='c';
        cout<<s<<endl;
    
        return 0;
    }

    在string的尾部当然还可以添加字符串,方法也有两种,一种是用”+“直接上,还有一种是直接用append函数.

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s+="abc";
        s+="123";
        cout<<s<<endl;
    
        return 0;
    }

    用append函数来搞定.

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s.append("123");
        s.append("abc");
        cout<<s<<endl;
    
        return 0;
    }

    2.4 给string对象插入字符

      可以使用insert()方法把一个字符插入到迭代器所指的位置之前的地方。

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s = "1234556";
        //定义迭代器
        string::iterator it;
        //迭代器的位置是字符串首
        it = s.begin();
        //把字符‘p’插入到string对象的第一字符的前面,字符位置是从0开始计数的
        s.insert(it+1,'p');
        cout<<s<<endl;
    
        return 0;
    }

    2.5 访问string对象的元素

      

      一般使用下标方式随机的访问string对象的元素,下标是从0开始的计数的。另外,string对象中的元素的本质是char,这一点要明确。

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s = "1234556aaaa";
        cout<<s[8]<<endl;
        cout<<s[8]-'a'<<endl;
        return 0;
    }

    2.6 删除string对象的元素

      删除string对象中的元素,其实和删除vector容器中的元素是一样的,都是使用erase()或者给原始的string赋值一个”“(空串即可将它清空).

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s = "1234556aaaa";
        string::iterator it;
        it = s.begin();
        s.erase(it+3);
        cout<<s<<endl;
        s.erase(it,it+5);
        cout<<s<<endl;
        s = "";
        cout<<s.length()<<endl;
    
    
        return 0;
    }

    2.7 返回string对象的长度

      采用length()方法可以返回字符串的长度,采用empty()的方法,可以返回字符串是不是为空,如果字符串为空的话,就返回逻辑真,1.

    否则,就返回逻辑假,0

    # include<iostream>
    # include<string>
    # include<cstdio>
    
    using namespace std;
    
    # define MAX 123
    
    int main(void)
    {
        string s;
        s = "1234556aaaa";
        cout<<s.length()<<endl;
        cout<<s.empty()<<endl;
        s = "";
        cout<<s.length()<<endl;
        cout<<s.empty()<<endl;
    
        return 0;
    }
  • 相关阅读:
    arcgis10.2转shp文件中文乱码问题解决方案
    Android Context作为参数传递this
    andriod inputbox
    andriod inputType
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)
    终于理解了什么是LGPL
    产品经理如何与强势的技术沟通? 技术比较有资历,会以技术无法实现等方面的原因拒绝处理产品提出的需求。 你们是否遇到这样的技术? 产品懂技术的话,是不是会好一些,因为可以和技术说“行话”了,并且产品懂技术就不会被忽悠了。
    Core Dump总结
    LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
    如何禁止C++默认成员函数
  • 原文地址:https://www.cnblogs.com/wikioibai/p/4395264.html
Copyright © 2011-2022 走看看