在C++的基础数据类型中,没有字符串常量。
C++有两种方式来存储和处理字符串,一种是从C语言继承过来的C风格字符串,即用字符数组来存放字符串。另一种是C++标准模板库里面的string类(推荐使用string类)。
字符串常量[1]
- 例:"program"
- 各字符连续、顺序存放,每个字符占一个字节,以‘0’结尾,相当于一个隐含创建的字符常量数组
- “program”出现在表达式中,表示这一char数组的首地址
- 首地址可以赋给char常量指针:
字符串常量的首地址赋值或者初始化一个字符指针,字符指针要是常指针,即指针前面有const修饰,因为指针所指向的对象是不能修改的常量地址。
用字符数组存储字符串(C风格字符串)
char str[8] = { 'p', 'r', 'o', 'g', 'r', 'a', 'm', '0' };
char str[8] = "program";
char str[] = "program";
用字符数组表示字符串的缺点
- 执行连接、拷贝、比较等操作,都需要显式调用库函数,很麻烦
- 当字符串长度很不确定时,需要用new动态创建字符数组,最后要用delete释放,很繁琐
- 字符串实际长度大于为它分配的空间时,会产生数组下标越界的错误
参考
- ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/d4eb7d174ba04a4da6282bcae197892c/434b29cf503548af98e71173eb3e647e/