1

C++字符串

C++字符串

C++提供了两种类型的字符串表示形式:

  • C风格字符串
  • C++引入的string类类型

C风格字符串

C风格的字符串源于C语言,并在C++中继续得到支持。字符串实际上是使用Null字符终止的一堆字符数组。因此一个以NULL结尾的字符串,包含了组成字符串的字符。
下面的声明和初始化创建了一个“Hello”字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词“Hello”的字符数多了一个。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', ''};,按照数组初始化规则,可以把语句写为char greeting[] = "Hello";。以下是C/C++中定义的字符串的内存表示:

其实,不需要把NULL字符放在字符串常量的末尾。C++编译器在初始化数组时,自动把''放在字符串的末尾。
实例:

#include<iostream>
using namespace std;
int main(){
	char greeting[] = {'H', 'e','l','l','o','\0'};
	cout<<"greeting message:";
	cout<<greeting<<endl;
	return 0;
}

结果显示:

C++中有大量的函数用来操作以NULL结尾的字符串:

函数 作用
strcpy(s1,s2) 复制字符串s2到字符串s1
strcat(s1, s2) 连接字符串s2到s1的末尾
strlen(s1) 返回字符串s1的长度
strcmp(s1, s2) 比较字符串s1和字符串s2,如果相同返回0,如果s1<s2返回<0;如果s1>s2返回>0
strchr(s1, ch) 返回一个指针,指向字符串s1中字符ch的第一次出现的位置
strstr(s1, s2) 返回一个指针,指向字符串s1中字符串s2的第一次出现的位置

实例:

#include<iostream>
using namespace std;
int main(){
	char str1[11] = "Hello";
	char str2[11] = "World";
	char str3[11];
	int len;
	//复制str1到str3
	strcpy(str3,str1);
	cout<<"strcpy(str3,str1):"<<str3<<endl;
	//连接str1和str2
	strcat(str2, str1);
	cout<<"strcat(str2, str1):"<<str2<<endl;
	//连接后str2的总长
	len = strlen(str2);
	cout<<"strlen(str2):"<<len<<endl;
	return 0;
}

结果输出:

C++中的String类

C++标准库提供了string类类型,支持上述所有的操作,另外还增加了其他功能。
实例:

#include<iostream>
#include<string>
using namespace std;
int main(){
	string str1 = "Hello";
	string str2 = "World";
	string str3;
	int len;
	//复制str1到str3
	str3 = str1;
	cout<<"str3:"<<str3<<endl;
	//连接str1和str2
	str3 = str1 + str2;
	cout<<"str1+str2:"<<str3<<endl;
	//连接后,str3的长度
	len = str3.size();
	cout<<"str3.size():"<<len<<endl;
	return 0;
	
}

结果显示:

posted @ 2023-10-28 10:21  Bonne_chance  阅读(48)  评论(0)    收藏  举报
1