c++的string可以有效的进行字符串的各种 *** 作,但是为了兼容c风格的字符串,还是提供了c_str()函数用来取得c风格字符串。
接下来用示例来了解一下c风格字符串的初始化需要注意的地方。
#include
using namespace std;
//c风格字符串
int main()
{
//用字面量初始化,但是字面量是const的
//之后str1不能修改
const char *str1 = "hello";
cout << "将str1的字符串结尾空字符转换成数字打印出来: " <<(int) str1[5] << endl;
//c风格字符串一定要多一个'char'
[ charArr6]= 'w' { ,'o','r','l','d','}';char*
= ;str2 //c风格字符串也可以用cout打印,空字符'<<'不会显示 charArr"打印str2: "
<<
cout << ; return str2 0 endl;
}
运行结果
可以看到,c风格字符串就是一个字符char的指针,最后一定要多一个空字符“\0”,它的ASCLL码的数值是0.这个空字符在字面量或者打印c风格字符串的时候不会显示,但它的意思是相当重要的。
因为c风格字符串是一个指针,相当于相当于只有开头字符地址的信息,并不知道这个字符串有多长,所以在各个 *** 作中,我们需要判断当前的字符是不是空字符来判定字符串是否结束,不然在读到字符串最后一个字符之后,程序会因为不知道字符串已经结束而继续读取后面内存中不相关的数据。
这个空字符已经是最小的冗余了,一般字符串类可能会存放字符串的长度,那就需要额外的数据了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)