C++ 字符串

1.    C-风格字符串c++

    说到字符串,那就不得先说说C-风格的字符串,它的头文件名是cstring。在C中存储字符串是经过char数组来实现的。下面看一段代码:数组

#include <cstring>
char c1[5] = {'Z','Z','e','r','o'};    //这不是字符串
char c2[5] = {'Z','e','r','o','\0'};   //是字符串

用cout打印一下c1,发现出现未知错误,打印出来的结果异常,而打印c2就是一个字符串。空字符对C-风格字符串来讲相当重要,空字符是C-风格字符串的结尾,当cout碰到空字符就会中止。而在打印c1过程当中,cout并无在数组中发现空字符,它会一直读下去,直到在其余内存空间碰到空字符,才结束,因此在打印完c1数组内容后面会出现一些莫名的字符。spa

    好了,又有问题来了,请看下面代码:code

int a[2] = {1,2};
cout<< a <<endl;  //打印了a的地址
char b[2] = {'Z'};
cout<< b <<endl;  //打印了Z

为何会出现这种状况呢, 这里牵扯到C++重载机制,对于char数组,cout输出数组内容,而对于其余类型数组,好比int数组,则输出首元素的地址。固然你要获取char数组地址,使用&b就能够实现。强调char数组名是指向首字符的地址的,这一点是不会变的,只不过cout处理char数组时,是输出地址里面的内容的。对象

    使用C-风格字符串,每次初始化时要用这么多单引号,太麻烦了,因此有另外一种方式初始化。请看下面代码:内存

char ch1[6] = "ZZero";
char ch2[] = "Everything starts from zero !"; //我的喜欢使用这种,不用去管大小,可是不提倡这种。

2.    C++字符串字符串

    c++字符串它的头文件是string,string类位于名称空间std中,所以要使用string对象就要用到using编译指令,或者使用std::string来引用它。string

#include <string>
using namespace std;
//string 初始化 
string str1 = {"Zzero"};
string str2 {"ZZero"};
string str3 = "ZZero";
相关文章
相关标签/搜索