本
例如,以下的数组:
是,最多可存储类型的20元素的数组
因此,该阵列具有用于存储的最多20个字符的序列的容量。但这种能力并不需要完全耗尽:所述阵列还可以容纳较短序列。例如,在程序的某个时刻,或该序列
的:按照惯例,在字符序列表示字符串的结束是由一个特殊的字符信号发送 空字符,其文字值可写成
在这种情况下,类型的20个元素的阵列
注意如何串本身的内容之后,一个空字符(
上述声明类型的6个元素的阵列
但字符元素的数组必须初始化另一种方法:使用 字符串直接。
在前面章节的一些例子使用的表达式,字符串已显示出了好几次。这些由封闭双引号之间的文本(指定
这是一个 字符串,可能在一些早期的例子中使用。
用双引号(字符序列
因此,所谓的字符元素的数组
在这两种情况下,字符数组
请注意,我们在这里讨论的是它被宣布的那一刻初始化字符数组,而不是后来将他们分配值(一旦他们已经声明)。事实上,由于字符串是正规的阵列,它们有相同的限制,因为这些,并不能分配值。
表达式(一旦myword已经声明如上述),如:
将 不是有效的,像既不是:
这是因为阵列不能被分配的值。注意,虽然,它的每个元素可以单独分配一个值。例如,这将是正确的:
在标准库,字符串(C字符串和库字符串)两种表示并存,需要串大多数功能都是重载的同时支持。
例如,
在本实施例中,使用利用空终止序列和字符串的字符的两个阵列。它们是在它们的使用相当可互换连同
在任何情况下,空值终止的字符序列和字符串很容易相互转化:
空值终止字符序列可以隐式转换成字符串,字符串可以通过使用要么被转化为空值终止字符序列
(注:这两个
string
类在前面的章节中已经作了简要介绍。这是一个非常强大的类来处理和操作字符的字符串。然而,由于字符串是,事实上,字符序列,我们也可以代表他们作为字符类型的元素的纯阵列。
例如,以下的数组:
| |
是,最多可存储类型的20元素的数组
char
。它可以表示为:
因此,该阵列具有用于存储的最多20个字符的序列的容量。但这种能力并不需要完全耗尽:所述阵列还可以容纳较短序列。例如,在程序的某个时刻,或该序列
"Hello"
或该序列
"Merry Christmas"
可以存储在
foo
,因为这两个将适合于一个序列与用于20个字符的容量。
的:按照惯例,在字符序列表示字符串的结束是由一个特殊的字符信号发送 空字符,其文字值可写成
'\0'
(反斜杠,零)。
在这种情况下,类型的20个元素的阵列
char
称为
foo
可表示存储该字符序列
"Hello"
和
"Merry Christmas"
为:
注意如何串本身的内容之后,一个空字符(
'\0'
)已经为了指示序列的结束时加入。在灰色的空格表示
char
未确定值的元素。
空值终止字符序列的初始化
由于字符数组都是普通阵列,它们遵循相同的规则,因为这些。例如,要初始化字符数组与字符的一些预定的顺序,我们可以做到这一点就像任何其他的阵列: | |
上述声明类型的6个元素的阵列
char
与形成单词的字符初始化
"Hello"
加上一个
空字符
'\0'
结尾。
但字符元素的数组必须初始化另一种方法:使用 字符串直接。
在前面章节的一些例子使用的表达式,字符串已显示出了好几次。这些由封闭双引号之间的文本(指定
"
)。例如:
| |
这是一个 字符串,可能在一些早期的例子中使用。
用双引号(字符序列
"
)的
字面常量。而它们的类型,实际上,字符的空终止数组。这意味着字符串始终有一个空字符(
'\0'
)在结束时自动追加。
因此,所谓的字符元素的数组
myword
可以通过这两个语句中的任何一个字符的空值终止序列进行初始化:
| |
在这两种情况下,字符数组
myword
被声明的尺寸型的6个元素的
char
:将5个字符组成该字
"Hello"
,再加上一个最后空字符(
'\0'
),它指定序列的末尾,并且,在第二种情况下,使用双引号时,(
"
),它会自动添加。
请注意,我们在这里讨论的是它被宣布的那一刻初始化字符数组,而不是后来将他们分配值(一旦他们已经声明)。事实上,由于字符串是正规的阵列,它们有相同的限制,因为这些,并不能分配值。
表达式(一旦myword已经声明如上述),如:
| |
将 不是有效的,像既不是:
| |
这是因为阵列不能被分配的值。注意,虽然,它的每个元素可以单独分配一个值。例如,这将是正确的:
| |
字符串和空值终止的字符序列
与字符的空值终止序列平原数组在C语言中用来表示字符串类型的典型(这就是为什么他们也被称为 C字符串)。在C ++中,尽管标准库定义字符串(类特定类型的string
),还是与字符(C字符串)的空值终止序列平原阵列代表在语言字符串的一种自然的方式; 事实上,字符串仍总是产生空值终止字符序列,而不是
string
对象。
在标准库,字符串(C字符串和库字符串)两种表示并存,需要串大多数功能都是重载的同时支持。
例如,
cin
并且
cout
支持直接空值终止序列,使他们能够从直接提取
cin
或插入
cout
,就像琴弦。例如:
| | 你叫什么名字?荷马 你住在哪里?希腊 你好,从希腊荷马! |
|
在本实施例中,使用利用空终止序列和字符串的字符的两个阵列。它们是在它们的使用相当可互换连同
cin
和
cout
,但在它们的声明一个显着的区别:阵列具有固定的大小,需要声明当待指定的隐式或显式;
question1
拥有大小正好20个字符(包括终止空字符),并
answer1
有大小80个字符; 而字符串是简单的字符串,不指定大小。这是由于这样的事实,即串有在运行时确定的动态尺寸,而是在汇编确定数组的大小,该程序运行之前。
在任何情况下,空值终止的字符序列和字符串很容易相互转化:
空值终止字符序列可以隐式转换成字符串,字符串可以通过使用要么被转化为空值终止字符序列
string
的成员函数
c_str
或
data
:
| |
(注:这两个
c_str
和
data
的成员
string
是等同的)