C++中的字符串

在C++中,字符串是一组字符的序列。在处理字符串时,我们会用到char类型。

Char类型

Char是C++中的一种数据类型,表示单个字符。我们可以使用单引号将字符括起来,例如:

char letter = 'a';

Char类型占用1个字节的内存空间,可以存储所有ASCII字符集中的字符,包括字母、数字、符号等。在C++中,char类型的取值范围是-128到127。

在处理字符串时,我们通常会将一组字符存储在char类型的数组中。

字符数组

C++中的字符串可以通过字符数组来实现。例如:

char str[10] = "Hello World";

这里定义了一个名为str的字符数组,并初始化为"Hello World"。我们可以使用类似于访问数组元素的方式来访问字符串中的每个字符。例如,要访问字符串中的第一个字符,可以使用以下代码:

char first = str[0];

字符串库

C++中提供了一些字符串处理的函数,例如strlen、strcpy、strcat等。这些函数可以帮助我们更方便地处理字符串。

  • strlen:用于获取字符串的长度。
  • strcpy:用于将一个字符串复制到另一个字符串中。
  • strcat:用于将一个字符串拼接到另一个字符串的末尾。
char str1[6] = "Hello";
char str2[6] = "World";
char str3[50];
int len;

// 复制str1到str3
strcpy(str3, str1);

// 将str2拼接到str3末尾
strcat(str3, str2);

// 获取str3的长度
len = strlen(str3);

以上代码将会得到str3的值为"Hello World",len的值为11。

char * 的隐式转换

在C++中,char * strchar str[] 都可以用来表示字符串,但是它们有一些区别。

char * str 实际上是一个指向字符数组的指针,它指向的是字符串的首地址。我们可以通过改变指针的位置来改变字符串的内容。例如:

char * str = "Hello";
str = "World";

这里我们将指针str从原来的"Hello"改变为了"World"。

另一方面,char str[] 是一个字符数组,它在定义时需要指定数组的长度,且该长度不能被改变。例如:

char str[10] = "Hello";

在这个例子中,定义了一个长度为10的字符数组,并将其初始化为"Hello"。如果我们想要将另一个字符串复制到该数组中,我们需要使用字符串库函数strcpy,例如:

char str[10];
strcpy(str, "World");

这里我们使用了strcpy函数将"World"复制到了str数组中。

总的来说,char * str 更加灵活,可以通过改变指针的位置来改变字符串的内容,但是需要注意指针的安全性。char str[] 在定义时需要指定数组的长度,更加安全,但是不够灵活。

举个例子:

char * str = "Hello";
cout << str << endl; // 输出 "Hello"

str = "World";
cout << str << endl; // 输出 "World"

char str2[10] = "Hello";
cout << str2 << endl; // 输出 "Hello"

strcpy(str2, "World");
cout << str2 << endl; // 输出 "World"

一般用 char * str 好操作 ,要不你char str[] 这种数组你在最后得给他加\0 才算是字符串呢

‘\0’

在C++中,’\0’是一个特殊的字符,表示字符串的结束。在使用字符数组表示字符串时,我们需要在数组的末尾添加’\0’来表示字符串的结束。例如:

char str[10] = "Hello";
str[5] = '\0';

这里我们将字符数组str的第6个元素赋值为’\0’,表示字符串的结束。此时,str中存储的字符串为"Hello"。

总的来说,对于字符数组表示的字符串,我们需要注意添加’\0’来表示字符串的结束,避免出现意外的错误。

#include

在C++中,除了使用char类型和字符数组来处理字符串,我们还可以使用库。这个库提供了丰富的字符串处理函数,例如length、substr、find等。使用这些函数可以更加方便地进行字符串操作。

例如,我们可以使用以下代码来创建一个字符串对象并输出其长度:

#include <string>
#include <iostream>

using namespace std;

int main() {
    string str = "Hello World";
    cout << str.length() << endl;
    return 0;
}

以上代码将会输出字符串"Hello World"的长度,也就是11。

总的来说,C++提供了多种处理字符串的方法,我们可以根据实际情况选择合适的方法来进行字符串操作。

底层是 const char[]

Untitled

总结

在C++中,我们可以使用char类型和字符数组来处理字符串。同时,也可以利用C++提供的字符串库函数进行更方便的字符串处理操作。

Xuanwei Zhang
Xuanwei Zhang
Software Engineer

My research interests include distributed database, distributed storage system and internet of things