📅  最后修改于: 2020-12-17 05:07:27             🧑  作者: Mango
C++提供以下两种类型的字符串表示形式-
C风格的起源于C语言中,并继续进行C++中支持。该字符串实际上是一维字符数组,以空字符’\ 0’结尾。因此,一个空终止字符串含有包含字符串后跟一个空字符。
以下声明和初始化创建一个由单词“ Hello”组成的字符串。为了将空字符保留在数组的末尾,包含字符串的字符数组的大小比单词“ Hello”中的字符数大一。
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
如果遵循数组初始化的规则,那么可以编写以下语句,如下所示:
char greeting[] = "Hello";
以下是C / C++中上述字符串的内存显示-
实际上,您不会将空字符放在字符串常量的末尾。 C++编译器在初始化数组时自动将’\ 0’放置在字符串的末尾。让我们尝试打印上述字符串-
#include
using namespace std;
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
return 0;
}
编译并执行上述代码后,将产生以下结果-
Greeting message: Hello
C++支持各种各样的函数,这些函数可以处理以null结尾的字符串-
Sr.No | Function & Purpose |
---|---|
1 |
strcpy(s1, s2); Copies string s2 into string s1. |
2 |
strcat(s1, s2); Concatenates string s2 onto the end of string s1. |
3 |
strlen(s1); Returns the length of string s1. |
4 |
strcmp(s1, s2); Returns 0 if s1 and s2 are the same; less than 0 if s1 |
5 |
strchr(s1, ch); Returns a pointer to the first occurrence of character ch in string s1. |
6 |
strstr(s1, s2); Returns a pointer to the first occurrence of string s2 in string s1. |
以下示例利用了上述几个功能-
#include
#include
using namespace std;
int main () {
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10];
int len ;
// copy str1 into str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;
// concatenates str1 and str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;
// total lenghth of str1 after concatenation
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
return 0;
}
当上面的代码被编译和执行时,产生的结果如下:
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10
标准的C++库提供了一个字符串类类型,它支持上述所有操作,此外还提供更多功能。让我们检查以下示例-
#include
#include
using namespace std;
int main () {
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// copy str1 into str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// concatenates str1 and str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// total length of str3 after concatenation
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
当上面的代码被编译和执行时,产生的结果如下:
str3 : Hello
str1 + str2 : HelloWorld
str3.size() : 10