• c++ 之 string


      相当于 C 的 char [], C++ 添加了一个新的类—— string.

      使用 string 类型 必须添加头文件  #include <string>

                      using std::string;   接下来介绍一些 string 常用的一些操作。

      string 类型的定义 和 基本类型的定义无太大的区别。多了这样的定义模式, string s1(10,c); 等价于 string s1 = "cccccccccc";

    string 对象上的操作

                           string 的一些操作

      getline(is , s )  从 is 中读取一行赋值给 s ,返回 is;

      s.empty()  当 s 为空返回 true,否则返回 false;

      s.size()  返回 s 中字符的个数

      s1+s2  返回 s1 和 s2 连接后的结果

    注意:  将标准输入的内容读取到 s 中时,string 对象会自动忽略开头的空白 (即空格符,换行符。制表符等),并从第一个真正的字符开始读起,直到遇见下一处空白为止。例如当输入 “    erhuoL   fine!” 时,string 对象只会读取 “erhuoL”

      那么,当我们需要读取一整行字符时,应该怎么做呢?

      getline,我们可以使用这个函数,具体用法如下:

      string s1; //   省略了 头文件 命名空间

      getline(cin , s1);

      这样处理器会把换行符前面所有的(包括换行符)全部读取到 s1 中,但是保存的时候并不会保存换行符。(此说明,触发 getline 函数返回的那个换行符实际上被丢弃了)

      但是值得注意的是,getline 只要一遇到换行符就结束读取操作并返回结果,哪怕输入的一开始就是换行符也是如此。例:

      Hi!erhuoL.    

      如此输入得到的会是一个空 string .

    特别在此介绍一下两个string 对象间比较大小,按照(大小写敏感)字典顺序

      1. 如果两个string 对象的长度不一致,而且较短对象的每个字符都与较长对象对应位置上的字符相同,那么较短string 对象小于较长 string 对象。

      2. 如果两个string 对象不相等,那么就是两个对象中第一对相异字符比较的结果。

    对于之前操作中的 size 函数

      其所返回的是一个 string::size_type , 这是个配套的类型,体现了标准库类型和机器无关的特性,特别注意,这是一个无符号的值而且能足够存放下任何 string 对象的大小。基本类型中我们知道,int 和 无符号类型值的混用会造成无法估计得结果,因此,如果一条表达式中已经有了 size() 函数就不要再使用 int 了,以避免混用可能带来的问题

    例: auto len  = s1.size(); // len 就是一个string::size_type 类型的值。

      虽然不知道具体细节,但是这个值可以用来执行  类似 while(len--) 的操作。

    处理string对象中的字符

      1. 我们可以使用 cctype 头文件中的函数来判断其中某个字符的特性,例: isalnum(c)  当c是字母或者数字时为真。

        tip: 这里给出两个比较方便的函数

          tolower : 如果是大写字母,输出对应的小写字母,否则原样输出。

          toupper :如果是小写字母,输出对应的大写字母,否则原样输出。

      2. 使用for(auto c : s1) 来遍历整个string对象 。tip : 这里的 c 是个 char 对象,在vs2015 中是 typedef char .... 

      3. 和数组一样使用下标  [] 进行访问。 例如 s1[i] = 'x'; 当 s1 为空时,则 s1[0] 就是为定义的。

  • 相关阅读:
    C语言数据类型取值范围
    C语言的概述--学习c的第二天
    开始学习c语言
    Comet 反Ajax: jQuery与PHP实现Ajax长轮询
    jquery的toFixed方法的正确使用
    JavaScript 正则表达式
    JavaScript中原型链存在的问题解析
    vue编程式导航
    vue 动态组件,传递参数
    JavaScript如何封装插件
  • 原文地址:https://www.cnblogs.com/erhuoL/p/5862845.html
Copyright © 2020-2023  润新知