在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串的。
C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。
C字符串定义时可以利用等号(“=”)进行初始化,但是以后不能再利用等号(“=”)对C字符串进行赋值。对C字符串的操作需要通过“string.h”头文件中字义的字符串处理函数。例如:
//字符串的初始化
char str[11] = "helloworld";
//字符串的赋值
strcpy(str, "hello c");
//获取字符串的长度(不包括'\0'在内)
strlen(str);
//显示字符串
printf("%s", str);
在C中也可以使用字符指针来访问一个字符串,通过字符指针指向存放字符数组的首元素地址来进行访问。
char* str = "helloworld";
print("%s", str);
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作。以下是C字符串和C++中string的区别:
|
C字符串 |
string对象 |
所需的头文件名称 |
string/string.h |
string/string.h |
为什么需要头文件 |
为了使用字符串函数 |
为了使用string类 |
如何声明 |
char name[20]; |
string name; |
如何初始化 |
char name[20] = "zhangsan"; |
string name = "zhangsan"; |
必须声明字符串长度吗? |
是 |
否 |
需要使用一个null字符作结尾符号吗? |
是 |
否 |
怎样实现字符串赋值? |
strcpy(name, "lisi"); |
name = "lisi"; |
其他优点 |
更快 |
更易于使用,优选方案 |
可以赋一个比现有字符串更长的字符串吗? |
不能 |
可以 |