C++语言指南(十二)——字符序列
2006-08-26 22:57
239 查看
![](http://blog.csdn.net/images/trans.gif)
C++语言指南(十二)——字符序列
**************************************************************
原文链接:http://www.cplusplus.com/doc/tutorial/
**********************************************
[align=left]字符序列[/align] |
[align=left]例如下面的数组:[/align]
[align=left]char jenny [20];[/align] |
<!--[if !vml]-->
![](http://www.cplusplus.com/doc/files/10-imgstri1.gif)
<!--[endif]-->
因此,在这个数组中在理论上我们可以存储一个最多包含20个字符的字符序列。但是我们也可以存更短的序列。例如,jenny可以在一个程序中的某处存储序列“Hello”或序列“Merry Chrismas”,因为它们两个都少于20个字符。
[align=left]因此,由于字符数组可以存储少于其总长度的序列,一个特殊的字符别用来标示有效序列的结束:“空字符”(null character),它在字面上被写为’/0’(反斜杠,零)。[/align]
我们的有20个char型元素的叫做jenny的数组存储字符序列“Hello”和“Merry Christmas”可以表述如下:
<!--[if !vml]-->
![](http://www.cplusplus.com/doc/files/10-imgstri2.gif)
<!--[endif]-->
[align=left]注意怎样为了指示序列的结束在序列的末尾加入了null字符('/0’)。灰颜色的格表示char元素的值不确定。[/align]
[align=left]初始化以null结尾的序列[/align]
[align=left]因为字符数组是普通的数组,因此它们也遵守同普通数组相同的规则。例如,如果我们想用一些提前确定好的字符来初始化一个字符数组,我们可以就像对其它数组那样完成它:[/align]
[align=left]char myword[] = { 'H', 'e', 'l', 'l', 'o', '/0' }; [/align] |
[align=left]在前面章节我们已经使用的表达式中,表示全部字符串的常量已经出现了多次。它们都是被一对双引号(")括起来的文本。例如:[/align]
[align=left]"the result is: "[/align] |
[align=left]带双引号(")的字符串是字符串常量,它们的类型实际上是null结尾的字符数组。所以被双引号括起来的字符串常量通常在结尾被自动加入了一个null字符('/0’)[/align]
[align=left]因此我们可以用下面两种方法中的任意一种来给叫做myword的字符数组初始化为一个null结尾的序列:[/align]
[align=left]char myword [] = { 'H', 'e', 'l', 'l', 'o', '/0' };[/align] [align=left]char myword [] = "Hello"; [/align] |
[align=left]请注意:我们讨论的是在一个字符数组在它声明时被初始化的情形,而不是在它们已经被声明了之后给它们赋值。事实上因为null结尾的字符数组的类型是普通的数组,我们有和任何其它数组相同的限制,因此我们不能用一个赋值操作来拷贝数据块。[/align]
[align=left]假设mytext是一个char[]型变量,在一个源代码中的像这样的表达式:[/align]
[align=left]mystext = "Hello";[/align] [align=left]mystext[] = "Hello"; [/align] |
[align=left]mystext = { 'H', 'e', 'l', 'l', 'o', '/0' };[/align] |
[align=left]使用以null结束的字符序列[/align]
[align=left]以null结尾的字符序列是在C++中处理字符串的普通方法,因此它们像在很多程序中那样使用。事实上,通常的字符串有这个类型(char[])也用于很多地方。[/align]
[align=left]例如,cin和cout支持以null结尾的序列为有效的字符序列的容器,因此它们可以被直接用于从cin中提取字符串或向cout中插入字符串。例如:[/align]
[align=left][/align] [align=left]// null-terminated sequences of characters[/align] [align=left]#include <iostream>[/align] [align=left]using namespace std;[/align] [align=left] [/align] [align=left]int main ()[/align] [align=left]{[/align] [align=left] char question[] = "Please, enter your first name: ";[/align] [align=left] char greeting[] = "Hello, ";[/align] [align=left] char yourname [80];[/align] [align=left] cout << question;[/align] [align=left] cin >> yourname;[/align] cout << greeting << yourname << "!"; [align=left] return 0;[/align] [align=left]}[/align] [align=left][/align] | [align=left]Please, enter your first name: John[/align] [align=left]Hello, John![/align] |
[align=left]最后,存储在数组中的字符序列能够和容易的通过赋值运算符转换成string对象:[/align]
[align=left]string mystring;[/align] [align=left]char myntcs[]="some text";[/align] [align=left]mystring = myntcs;[/align] |
相关文章推荐
- 字符转义序列
- 判断是否是简单密码,不能包含相同的字符(如aaa,111),递增序列(abc,123),递减序列(cda,321)
- 练习1-24: 编写一个程序,查找C语言程序中的基本语法错误,如圆括号,方括号以及花括号不配对等。要正确的处理引号(包括单引号,双引号)~转移字符序列与注释(如果读者想把该程序编写成完全通用的程序,难度会比较大。)
- R 学习笔记《十二》 R语言初学者指南--格包
- C++ 高级数据类型(二)—— 字符序列
- [HihoCoder]#1149 : 回文字符序列
- '序列1&序列2'模式 的字符序列的判定
- 字符序列
- 求字符序列的所有组合
- ldd3学习之十二(3):高级字符驱动程序操作--poll/select、异步通知
- CSS计数器(序列数字字符自动递增)详解
- mongodb指南(翻译)(十二) - developer zone - 数据类型和约定(一)
- FusionCharts Free中文开发指南 第十二章--FCF中的特殊字符
- 字符序列
- Oracle笔记(十二) 集合、序列
- 黑马程序员__字符流_序列流_内存流_对象操作流_打印流_标准输出流_数据输入输出流及Properties
- 《CSS计数器(序列数字字符自动递增)详解》
- 求最大子序列长度及最大字段和 --动态规划法C++语言
- 匹配字符JavaScript: The Definitive Guide 权威指南,读书笔记(二)
- Python学习系列十二:序列的方法