大家知道,C++编程语言中,对于字符串的操作是一个比较基础而且重要的操作技巧。C++字符串一般情况下可以通过以下两种形式进行表示,分别为;传统字符串,以及字符数组这两种。#t#
庆城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
1.C++字符串之 传统字符串
a) char ch1[] = {“liangdiamond”}
b) char ch2[] = {“hello world”}
其中关于传统字符串,有几个常用的函数
a) strcpy()函数
b) strcat()函数
c) strlen()函数
d) strcmp()函数
e) strlwr()函数:大写变为小写
f) strupr()函数,小写变为大写
2. C++字符串之字符数组
从表面上看,一个字符串是一个字符数组,但在c++语言中,它们不同。字符串是以’\0’结束的字符型数组。下面这段代码展示字符串和字符数组的区别:
- #include < iostream>
- using namespace std;
- int main()
- {
- char a[] = {"hello"};
- char b[] = {'h','e','l','l','o'};
- int la = 0;
- int lb = 0;
- cout< < "The length of a[]:"< < sizeof(a)/sizeof(char)< < endl;
- cout< < "The length of b[]:"< < sizeof(b)/sizeof(char)< < endl;
- system("Pause");
- return 0;
- }
可以修改程序:
- #include < iostream>
- using namespace std;
- int main()
- {
- char a[] = {"hello"};
- char b[] = {'h','e','l','l','o','\0'};
- int la = 0;
- int lb = 0;
- cout< < "b="< < b< < endl;
- cout< < "The length of a[]:"< < sizeof(a)/sizeof(char)< < endl;
- cout< < "The length of b[]:"< < sizeof(b)/sizeof(char)< < endl;
- system("Pause");
- return 0;
- }
但是数组名就是数组的首地址,所以数组名本身就可以理解为一个指针,只不过,它是指针常量,所谓指针常量,就是指针不能改变所指向的地址了,但是它所指向的地址中的值可以改变。
例如:
- #include < iostream>
- using namespace std;
- int main()
- {
- char a[] = {"hello"};
- char b[] = {'h','e','l','l','o','\0'};
- a++;
- system("Pause");
- return 0;
- }
编译报错。
C++字符串中字符数组和字符指针虽然在形式上很接近,但在内存空间的分配和使用上还是有很大差别。数组名不是一个运行时的实体,因此数组本身是有空间的,这个空间由编译器负责分配。而指针是一个变量(运行时实体),它所指向的空间是否合法要在运行时决定。
- #include < iostream>
- using namespace std;
- int main()
- {
- char s[] = "abc";
- char* p = "abc";
- s[0] = 'x';
- cout< < s< < endl;
- //p[0] = 'x'; 编译报错
- cout< < p< < endl;
- system("Pause");
- return 0;
- }
S的地址和p所指向的地址并不是一个地方,可以推断0x00417704是常量区。所以貌似不能改。用反汇编其实看的更清楚一点。指针好就好在它能指向内存,不是ROM 区的好似都能改。
以上就是对C++字符串的相关介绍。
网站题目:C++字符串各种用法讲解
当前链接:http://www.36103.cn/qtweb/news30/9980.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联