欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-26 16:52:57
在C语言中如果想要使用字符串那么有两种方法: 1.定义char型数组:char[10]; 然后将每个字符填充到对应的位置。 优点:这种方式将字符串放在内存所以每个位置都可以修改。 缺点:赋值比较麻烦,需要预先定义好长度。 2.定义char 型指针:char *str = "string test " ......

在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;
}

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

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语言方便很多。