C++ 学习笔记(三)string 类

2018-08-26 17:15:39来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

在C语言中如果想要使用字符串那么有两种方法:

  1.定义char型数组:char[10]; 然后将每个字符填充到对应的位置。

    优点:这种方式将字符串放在内存所以每个位置都可以修改。

    缺点:赋值比较麻烦,需要预先定义好长度。

  2.定义char 型指针:char *str = "string test ";

    优点:赋值方便,不需要定义长度。

    缺点:字符串是一个常量,想要改变其中某个字符是不存在的。

以上两种方式都可以以数组的方式访问字符串中的某一个字符。然而字符串长度不定,内容也不确定的情况在开发中还是很经常遇到的,举个栗子就是文件的命名(用户二次开发的要求五花八门);使用C语言只能开一个比较大的char型数组来解决这个问题但是内心是极其不爽的。

 

C++ string类的牛逼之处:

  1.c++兼容c语言下的字符串的玩耍方式。

  2.string是一个类,那么它有自己的“方法”(函数),就是说它自带了求字符串长度、字符串转整型、查找字符等各种功能。

  3.字符串合并直接相加即可,想要在字符串后面加上什么直接 str += "abc"就搞定啦。

  4.不需要定义字符串长度可随意改变字符串内容。(这点很皮)

  5.想要将其他字符串拷贝过去直接用'='就搞定:str = str1;这样就将str1的内容拷贝给str了。

 

下面将用程序演示string类的好玩之处:  

#include <iostream>
#include <string>
using namespace std;

void func(int num)
{
    char arry[num];
    int i;
    for(i=0;i<num;i++)
        arry[i] = 'a';
    arry[num-1] = '\0';
    cout<<arry<<endl;
}

int main(int argc, char **argv)
{
    string str1 = "abc";
    string str2 = "def";
    string str3;
    cout<<"str1:"<<str1<<endl;

    cout<<str1+str2<<endl;
    
    str1[1] = 'a';
    cout<<"str1:"<<str1<<endl;
    
    cout<<"entry str3"<<endl;
    cin>>str3;
    cout<<"str3 :"<<str3<<"\nstrlen of str3 :"<<str3.size()<<endl;
    
    int num = 0;
    cout<<"entry arry num"<<endl;
    cin>>num;
    func(num);
    system("pause");
    return 0;
}

   

1.代码66 行 将str1 与 str2直接相加可直接将其链接起来,类似C语言使用的strcat函数。当然也可以将两者相加的结果赋值给另一个string类

2.代码68行 直接修改str1中的某一个字符

3.代码72行 随机输入一个内容,长度不定的字符串string类可以很好的保存起来

4.代码73行 调用srting类size函数可计算出字符串长度

5.函数func()内可以定义一个数组,长度可以是一个变量这个在C语言中想想就好。数组字符串需要预留结束符 ’\0‘的位置那么

  arry[2] == '\0'; 所以只输出了两个字符’a‘。

 

感受:

  俗话说编程语言没有优劣之分,各有千秋。但是C++ 的srting 类以及数组长度可用变量进行定义这两点用起来确实是比C语言方便很多。

 

 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:网络库压力测试:mongols VS evpp

下一篇:[BZOJ4444][Scoi2015]国旗计划-[ST表]