成都创新互联网站制作重庆分公司

C++字符串有哪些用法

这篇文章主要为大家展示了“C++字符串有哪些用法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++字符串有哪些用法”这篇文章吧。

站在用户的角度思考问题,与客户深入沟通,找到长寿网站设计与长寿网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站设计、企业官网、英文网站、手机端网站、网站推广、域名申请虚拟主机、企业邮箱。业务覆盖长寿地区。

1.C++字符串之 传统字符串

a) char ch2[] = {“liangdiamond”}

b) char ch3[] = {“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://cxhlcq.com/article/ihsjge.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部