C++字符串操作:String类

字符串:

与C一样,C++基本数据类型变量中没有字符串变量
C语言:字符型数组存放字符串。C++可以沿用这种方法。 标准C++库中还定义了string类
  1. 字符数组存储处理字符串:
      字符串常量:
          eg: const char *String = "This is a string";             字符串常量,是一个隐含创建的类型为 char的数组,该字符串常量表示这样一个数组的首地址
                  cout<<String;      可直接输出                           因此可以把字符串常量赋给字符串指针
      字符串变量:
          eg:创建一个初值为"program"的字符串变量
                1) char str[8] = { 'p','r','o','g','r','a','m','\0'};
                2) char str[8] = "program";            末尾的\0隐含
                3) char str[] = "program"; 
             上述三种方法等价
          C++对繁琐的字符串操作进行了封装,形成了string类,从而可方便操作字符串

  2. string 类: C++标准类库将面向对象的串的概念加入到 C++语言中,预定义了字符串类(string类)。 string类提供了对字符串进行处理所需要的操作
                       string类封装了串的属性并提供了一系列允许访问这些属性的函数
               严格来说: string 并非一个独立的类,而是类模板 basic string 的一个特化实例。不过,对于string的使用者来说,它的特点与一个类无异
     
       构造函数原型:(重载)
               string();                                   // 默认构造函数,建立长度为0的串
               string(const string &rhs);        // 复制构造函数
               string(const  char *);               // 用指针s所指向的字符串( 常量)初始化string类的对象
               string(const string &rhs,unsigned int pos, unsigned int n);   //  将对象rhs中的串从位置 pos 开始取 n 个字符,用来初始化 string 类的对象
                                                                                                                 //  串中第一个字符的位置为0
               string(const  char *, unsigned int n);                                    //  用指针s所指向的字符串中的前 n 个字符初始化string类的对象
               string (unsigned int n, char  c ) ;                                                 //  将参数c中的字符重复n次,用来初始化string类对象
     
            思维误区:  char *  const 指针类型的常量, const char * 指向常量的指针 
 
      string类的操作符:
           string类对操作符:+, =, +=, ==, !=, <, <=, >, >=, []  进行了重载
           这里所说的是对两串的比较:
           1)如果 s1 与 s2 长度相同,且所有字符完全相同,则 s1 = s2
           2)如果s1 与 s2所有字符不完全相同,则比较第一对不相同字符的 ASCII 码,较小字符所在的串为较小的串
           3)如果s1 的长度n1小于 s2的长度n2,且字符串的前n1个字符完全相同,则  s1 < s2

      常用成员函数功能简介:
           
          string append(const char *s);     // 将字符串s添加到本串尾
          string assign(const char *s);          // 赋值,将s所指向的字符串复制给本对象
          int  compare(const string &str) const;  //比较本串与str中串的大小;本串小,返回负数;本串大,返回正数;相等,返回0;
          string & insert(unsigned int p0, const char *s);   //讲s所指向的字符串插入在本串p0之前
          string  substr(unsigned int pos,unsigned int n)  const;  //取子串,取本串中位置pos开始的n个字符,构成新的string类对象作为返回值
          unsigned int find(const basic_string &str) const;    //查找并返回str在本串中第一次出现的位置
          unsigned int length() const;         //返回串的长度(字符个数)
          void swap (string &str);               // 将本串与str中的串进行交换

    cin 的操作符">>"可从键盘输入字符串,以这种方式输入时,空格会被作为输入的分隔符
    如果希望从键盘读入字符串,直到行末为止(能跳过空格),使用头文件中定义的getline
        eg: getline(cin , s2)       // 实际上是以换行符作为分隔符
                getline(cin,s2,',') // 表示逗号作为分隔符

总结的不全面,后续会更新
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值