zoukankan      html  css  js  c++  java
  • C++ String详解

    • 标准库类型string代表可变长的字符序列,使用前需添加头文件<string>,string定义在命名空间std中。
    • string的定义和初始化:
    • 初始化string对象的几种方式:
    • 1 string s1;//默认初始化方式,s1是一个空字符串 
       2 string s2 = s1;//s2是s1的副本
       3 string s3 = "hello";//s3是该字面值的副本
       4 string s4("hello");//等价于s3 = “hello”
       5 string s5(10,'c');//s5的内容为cccccccccc
    •  拷贝初始化和直接初始化
      • 如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化
      • 反之,如果不使用等号,则执行的是直接初始化
      • 当用于类类型对象时,初始化的拷贝形式和直接形式有所不同,直接初始化直接调用与实参匹配的构造函数,拷贝初始化总是调用复制构造函数。拷贝初始化首先使用指定构造函数创建一个临时对象,然后使用复制构造函数将临时对象复制到正在创建的对象
      • 对于拷贝初始化,最明显的调用手段就是使用"="符号,但还有许多隐式调用的情况,如:参数传递,函数返回,初始化容器
        • 参数传递:对于函数的参数传递,除非是引用参数,否则就是一个使用上层传递参数的拷贝参数
        • 函数返回值:除非是引用返回值,否则返回的也是上层对象的一个拷贝
    • 读写string
     1 //getline函数的作用是从输入流中读取一行字符
     2 //示例代码
     3 #include <iostream>
     4 #include <string>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     string s;//定义一个名为s的空字符串
    10     cout << "enter a sentence" << endl;
    11     cin >> s;//将标准输入的内容读取到s中
    12     cout << "The string read with cin is:" << s << endl;
    13 //在执行读取操作时,string对象会自动忽略开头的空白,并从一个真正的字符开始,直到遇到下一个空白结束
    14 //所以如果程序的输入是“ hello world”,则输出将是“hello”,输出结果中没有任何空格
    15 
    16     //getline函数的参数是一个输入流和一个string对象,函数从给定的输入流中读入内容,直到遇到换行符为止,然后把所读内容存入string对象中
    17     getline(cin,s);//从输入流中读取内容存入s中
    18 }
    • size_type
      • 由string类类型和vector类类型定义的类型,用于保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
      • size_type是一个无符号类型的值,而且能够放下任何string对象的大小,所有用于存放string类的size函数返回值的变量,都应该是string::size_type类型的
      • size_type从本质上讲,是一个整型数,关键是由于机器的环境不同,他的长度是不同的,这就体现了机器无关性
    • string对象的比较运算
      • 相等性运算符(==和!=)分别检验两个string对象相等或不相等,区分大小写,意味着长度相同且所包含字符也全部相同
      • str.compare(“ str1”)==0    str和str1比较,若相等则为compare返回0,与0比较为真,反之则为假
    • string对象的拼接
      • 两个string对象相加得到一个新的string对象,其内容是把左侧的运算对象与右侧的运算对象串接而成
    1 string s1 = "hello, ",s2 = "world
    ";
    2 string s3 = s1 + s2;//s3的内容是hello, world
    
      • 字面值和string对象相加
    1 //当把string对象和字符字面值以及字符串字面值混在一条语句中使用时,必须确保每个加法运算符两侧的运算对象至少有一个是string对象
    2 string s4 = s1 + ", ";//正确,把一个string对象和字符串字面值相加
    3 string s5 = "hello" + ",";//错误,两个运算对象都不是string
  • 相关阅读:
    打印杨辉三角
    插值排序
    各种冒泡排序法
    Linux系统命令符01
    2.1博客系统 |基于form组件和Ajax实现注册登录
    python面试笔试题,你都会了吗?快来复习
    1.2博客系统 |登录页| 验证码
    1.1博客系统| 表结构
    第五章:5.2面向对象-绑定方法和非绑定方法| 内置方法 |元类
    11.Django|中间件
  • 原文地址:https://www.cnblogs.com/danielStudy/p/6732273.html
Copyright © 2011-2022 走看看