C++字符串各种用法讲解

大家知道,C++编程语言中,对于字符串的操作是一个比较基础而且重要的操作技巧。C++字符串一般情况下可以通过以下两种形式进行表示,分别为;传统字符串,以及字符数组这两种。

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;  


} 

相关推荐