LTT的问题:
1、C++中 char*,char[],string 三种类型有什么不同点和相同点,后者比前者有什么优势呢?
答:
(1)char *p, 表示p是一个指向字符串的指针
(2)char p[], 表示p是一个字符串的数组,在某些时候,char p[] 和 char *p 是一样的,但对于栈上的实例,例如 char *p1 = "12345"; char p2[] = "12345"; 这个时候,sizeof(p1) ==4, strlen(p1) == 5, sizeof(p2) == 6, strlen(p2) == 5 (这里体现了strlen()只能用char*做参数,且必须是以“\0”结尾的。sizeof还可以用函数做参数。)
(3)string s, 表示s是一个string类的对象,有它自己的成员变量和成员函数,具体的你可以查一下手册。这个和前两种区别比较大
这三个在C++里面都可以表示一个字符串
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必
担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,==
进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。