c与c++定义字符串的异同

在c语言中定义字符串:

  1. C语言中用字符型CHAR来表示存储字符,没有C++里面的可以单独的字符串类型String;

  2. 所以C里面使用字符数组和字符指针来实现字符串功能;

  3. C的字符数组只能在定义时一起赋值,以后只能给单个元素一一赋值;

  4. char string0[10];

  5. char string1[]="prison break";

  6. char string2[100]="michael scofield";

  7. 1句表示定义个长度为10的字符串,但未赋值,2句表示定义了一个字符数组string1,并进行初始化,使得其长度自动为13(字符串”prison break"中的字符个数加上结尾的'\0'),3句定义了一个有100个元素的字符数组string2,并初始化了17个元素("michael scofield";加上结尾的'\0')。

C语言本身是没有设置一种类型来定义字符串变量的,字符串的存储完全依赖于字符数组,但字符数组又不等于是字符串变量。在字符型一维数组存放字符串,并规定以字符'\0'作为字符串结束标志。

C++中有两种字符串的概念:

string类
C++中,字符串大多数时候用来指代string类。这时C++ STL中的一个类,包含了各种常用的字符串操作。定义方法为
string var;

string var(init_list);

string var = init_value;
由于string为类,定义时实际上是定义了一个对象,而初始化方式也就决定了调用何种构造函数来进行构造。string的构造方法有很多,不一一列举,仅以最常用的方式举例:
string a;//定义一个空字符串
string b="test string";//定义一个字符串并初始化为test string。

2 字符数组。
C++继承了C语言的概念,而在C语言中字符串指的是字符数组,并约定以\0作为结束符。
定义方式如下:
char a[20] = "test string"; //定义一个字符串并初始化为test string。
char *b = "test string"; //与a类似,但这个是直接使用常量字符串的地址,所以字符串b是只读的。

猜你喜欢

转载自blog.csdn.net/gjs935219/article/details/81502273
今日推荐