C++ 字符串函数:strcpy()、strcat()、strlen()、strcmp() 示例
什么是字符串?
字符串是字符序列。C++ 字符串是 std::string 类的对象。字符按字节序列存储,允许访问单个字符字节。
C++ 字符串动态分配内存。如果需要,可以在运行时为字符串分配更多内存。由于没有预先分配内存,因此不会浪费内存。我们可以对字符串执行各种操作,包括比较、连接、转换等。
声明字符串
C++ 支持两种字符串声明方式
- C 风格字符字符串
- 字符串类类型
C 风格字符字符串
这种字符串声明方式是在 C 编程语言 中引入的。C++ 继续支持它。它本质上是一个由字符组成的零维数组,以空字符(\0)终止。零终止字符串包含组成字符串的字符,后面跟着一个空字符。
考虑下面的字符串声明
char name[5] = {'J', 'o', 'h', 'n', '\0'};
上面的声明创建了一个名为 John 的字符串。该词有 4 个字符,但字符串的大小是 5。额外的空间用于存放空字符。
使用数组初始化规则,我们可以将上述语句写成如下形式
char name[] = "John";
请注意,您不必在字符串常量末尾放置空字符。C++ 编译器在初始化数组时会自动在字符串末尾放置“\0”。
std::string
标准的 C++ 库提供了 string 类,它支持各种字符串操作。它被写成 std::string。
要使用此类,我们必须首先使用如下所示的 #include 预处理器将其包含到我们的工作区中
#include<string>
接下来,我们可以使用 string 关键字声明我们的字符串。例如
string name = "John";
上面的语句将创建一个名为 name 的字符串来存储 John 的值。
访问字符串值
在 C++ 中,我们可以使用字符串名称来访问字符串值。例如
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个字符字符串并将其命名为 name。该字符串将存储 John 的值。额外的空间将存储空字符。
- 在控制台上打印一些文本。
- 在控制台上打印名为 name 的字符串的值。
- 如果程序运行正常,main() 函数应返回一个值。
- main() 函数体结束。
这是使用 C++ 标准字符串类的另一个示例
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 将标准的 string 类包含到我们的代码中。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个字符串并将其命名为 name。该字符串将存储 Guru99 的值。
- 在控制台上打印名为 name 的字符串的值以及一些文本。
- 如果程序运行正常,main() 函数应返回一个值。
- main() 函数体结束。
C++ 中的字符串函数
您经常需要操作字符串。C++ 提供了广泛的函数供您使用。这些函数定义在 CString 类中,因此,为了使用这些函数,我们必须将其包含在我们的代码中。让我们讨论一些
strcpy()
这是字符串复制函数。它将一个字符串复制到另一个字符串。
语法
strcpy(string1, string2);
函数中的两个参数 string1 和 string2 是字符串。该函数会将字符串 string2 复制到字符串 string1 中。
strcat()
这是字符串连接函数。它用于连接字符串。
语法
strcat(string1, string2);
函数中的两个参数 string1 和 string2 是要连接的字符串。上面的函数会将字符串 string2 连接到字符串 string1 的末尾。
strlen()
这是字符串长度函数。它返回作为参数传递给它的字符串的长度。
语法
strnlen(string1)
参数 string1 是要确定其长度的字符串的名称。上面的函数将返回字符串 string1 的长度。
strcmp()
这是字符串比较函数。它用于字符串比较。
语法
strcmp(string1, string2);
如果字符串 string1 和 string2 相同,则上述函数返回 0;如果 string1<string2,则返回小于 0 的值;如果 string1>string2,则返回大于 0 的值。
示例
下面的示例演示了如何使用上述字符串函数
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
输出
这是代码的屏幕截图:
代码解释
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 将标准的 CString 类包含到我们的代码中。
- 包含 std 命名空间,以便使用其类和函数而无需调用它们。
- 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
- 声明一个 10 个字符的字符串并将其命名为 name1。该字符串将存储 Guru99 的值。
- 声明一个 10 个字符的字符串并将其命名为 name2。该字符串将存储 John 的值。
- 声明一个 10 个字符的字符串并将其命名为 name3。
- 声明一个名为 len 的整数变量。
- 将字符串 name1 复制到字符串 name3 中。
- 在控制台上打印名为 name1 的字符串的值以及一些文本。它应该打印 Guru99。
- 将字符串 name2 连接到字符串 name1 的末尾。name1 的值现在是 Guru99John。
- 在控制台上打印名为 name1 的字符串的值以及一些文本。它应该打印 Guru99John
- 确定名为 name1 的字符串的长度,并将长度值赋给变量 len。
- 在控制台上打印 len 变量的值以及其他一些文本。
- 如果程序运行正常,main() 函数应返回一个值。
- main() 函数体结束。
摘要
- 字符串是字符序列。
- 字符串属于 C++ 中的标准字符串类。
- 我们可以使用 C 风格字符字符串或标准字符串类来声明字符串。
- strcpy() 函数将一个字符串复制到另一个字符串。
- strcat() 函数将两个字符串连接起来。
- strlen() 函数返回字符串的长度。
- strcmp() 函数比较两个字符串。