C++Primer第5版 字符串

字符串字面值是一种通用的结构实例,是c++由c继承的c风格字符串,它不是一种类形,而是为了表达和使用字符串而形成的一种约定俗成的写法,按此写法书写的字符串存放在字符数组并以空字符结束,空字符结束的意思是在字符串最后一个字符后面跟着一个空字符\0。

C标准String函数

 

传入此类函数的指针必须指向以空字符作为结束的数组。

比较字符串

String对象用普通关系运算符和相等性运算符。

如果把这些运算符用在C风格字符串上,实际比较的是指针而非字符串本身。

数组其实真正是指向数组首元素的指针。

对大多数应用来说,使用标准库string比使用C风格字符串要更安全。

混用String对象和C风格字符串

允许使用字符串字面值来初始化string对象。

任何出现字符串字面值的地方都快可以使用以空字符结束的字符数组来替代。

1.允许使用以空字符结束的字符数组来初始化String对象或为String对象赋值。

2.在string对象的加法运算中,允许使用以空字符结束的字符数组作为其中一个运算对象(不能两个都是)

string对象的符合符合赋值运算允许使用以空字符结束的字符数组作为右侧的运算对象。

反过来就不成立了,不能用string对象直接初始化指向字符的指针,为了完成此类操作,string提供了一个c_str的函数。

string s;

char *str=s;//错误 不能用string对象初始化char*

const char*str=s.c_str();//√

c_str的返回值是一个C风格的是字符串,函数的返回值是一个指针,指针指向一个以空字符结束的字符数组。

WARNING 如果执行完c_str()函数后程序向一直能使用其返回值,最好将该数组重新拷贝一份。

使用数组初始化vector对象

不允许使用一个数组为另一个内置类型的数组赋初值,也不允许使用vector对象初始化数组,允许使用数组来初始化vector对象,只需要指明要拷贝取余的首元素地址和尾后地址就行。

int arr[]={0,1,2,3,4,5};

vectorb(begin(arr),end(arr));

多维数组

多维数组本质上是数组的数组,按照由内而外的顺序阅读比类定义有助于更好地理解其真正含义。

多维数组的初始化

允许使用花括号括起来的值初始化多维数组。

初始化时并非所有元素的值都必须包含在初始化列表之内,其他未列出的元素执行默认初始化。

多位数组下标运用

可以使用下标运算符访问多维数组的元素,此时数组的每个维度对应一个下标运算符。

如果下标运算符和数组的维度一样多,该表达式的结果将是给定类型的元素,反之下标运算符数量小,表达式的结果将是给定索引初一个内层数组。

使用范围for语句处理多维数组

将外层循环的控制变量声明成引用类型,这是为了避免数组被自动转成指针。

NOTE:要使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ Primer中文(第5)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。 目录 第1章 开始 1   1.1 编写一个简单的C++程序 2   1.1.1 编译、运行程序 3   1.2 初识输入输出 5   1.3 注释简介 8   1.4 控制流 10   1.4.1 while语句 10   1.4.2 for语句 11   1.4.3 读取数量不定的输入数据 13   1.4.4 if语句 15   1.5 类简介 17   1.5.1 Sales_item类 17   1.5.2 初识成员函数 20   1.6 书店程序 21   小结 23   术语表 23   第Ⅰ部分 C++基础 27   第2章 变量和基本类型 29   2.1 基本内置类型 30   2.1.1 算术类型 30   2.1.2 类型转换 32   2.1.3 字面值常量 35   2.2 变量 38   2.2.1 变量定义 38   2.2.2 变量声明和定义的关系 41   2.2.3 标识符 42   2.2.4 名字的作用域 43   2.3 复合类型 45   2.3.1 引用 45   2.3.2 指针 47   2.3.3 理解复合类型的声明 51   2.4 const限定符 53   2.4.1 const的引用 54   2.4.2 指针和const 56   2.4.3 顶层const 57   2.4.4 constexpr和常量表达式 58   2.5 处理类型 60   2.5.1 类型别名 60   2.5.2 auto类型说明符 61   2.5.3 decltype类型指示符 62   2.6 自定义数据结构 64   2.6.1 定义Sales_data类型 64   2.6.2 使用Sales_data类 66   2.6.3 编写自己的头文件 67   小结 69   术语表 69   第3章 字符串、向量和数组 73   3.1 命名空间的using声明 74   3.2 标准库类型string 75   3.2.1 定义和初始化string对象 76   3.2.2 string对象上的操作 77   3.2.3 处理string对象中的字符 81   3.3 标准库类型vector 86   3.3.1 定义和初始化vector对象 87   3.3.2 向vector对象中添加元素 90   3.3.3 其他vector操作 91   3.4 迭代器介绍 95   3.4.1 使用迭代器 95   3.4.2 迭代器运算 99   3.5 数组 101   3.5.1 定义和初始化内置数组 101   3.5.2 访问数组元素 103   3.5.3 指针和数组 105   3.5.4 C风格字符串 109   3.5.5 与旧代码的接口 111   3.6 多维数组 112   小结 117   术语表 117   第4章 表达式 119   4.1 基础 120   4.1.1 基本概念 120   4.1.2 优先级与结合律 121   4.1.3 求值顺序 123   4.2 算术运算符 124   4.3 逻辑和关系运算符 126   4.4 赋值运算符 129   4.5 递增和递减运算符 131   4.6 成员访问运算符 133   4.7 条件运算符 134   4.8 位运算符 135   4.9 sizeof运算符 139   4.10 逗号运算符 140   4.11 类型转换 141   4.11.1 算术转换 142   4.11.2 其他隐式类型转换 143   4.11.3 显式转换 144   4.12 运算符优先级表 147   小结 149   术语表 149   第5章 语句 153   5.1 简单语句 154   5.2 语句作用域 155   5.3 条件语句 156   5.3.1 if语句 156   5.3.2 switch语句 159   5.4 迭代语句 165   5.4.1 while语句 165   5.4.2 传统的for语句 166   5.4.3 范围for语句 168   5.4.4 do while语句 169   5.5 跳转语句 170   5.5.1 break

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值