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;
}

输出

Accessing string Values

这是代码的屏幕截图:

Accessing string Values

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  3. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  4. 声明一个字符字符串并将其命名为 name。该字符串将存储 John 的值。额外的空间将存储空字符。
  5. 在控制台上打印一些文本。
  6. 在控制台上打印名为 name 的字符串的值。
  7. 如果程序运行正常,main() 函数应返回一个值。
  8. main() 函数体结束。

这是使用 C++ 标准字符串类的另一个示例

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";
	
	cout << "The name is : " << name << endl;

	return 0;
}

输出

Accessing string Values

这是代码的屏幕截图:

Accessing string Values

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 将标准的 string 类包含到我们的代码中。
  3. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  4. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  5. 声明一个字符串并将其命名为 name。该字符串将存储 Guru99 的值。
  6. 在控制台上打印名为 name 的字符串的值以及一些文本。
  7. 如果程序运行正常,main() 函数应返回一个值。
  8. 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;
}

输出

String Functions in C++

这是代码的屏幕截图:

String Functions in C++

代码解释

  1. 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
  2. 将标准的 CString 类包含到我们的代码中。
  3. 包含 std 命名空间,以便使用其类和函数而无需调用它们。
  4. 调用 main() 函数,程序的逻辑应添加到其中。{ 标记 main() 函数体的开始。
  5. 声明一个 10 个字符的字符串并将其命名为 name1。该字符串将存储 Guru99 的值。
  6. 声明一个 10 个字符的字符串并将其命名为 name2。该字符串将存储 John 的值。
  7. 声明一个 10 个字符的字符串并将其命名为 name3。
  8. 声明一个名为 len 的整数变量
  9. 将字符串 name1 复制到字符串 name3 中。
  10. 在控制台上打印名为 name1 的字符串的值以及一些文本。它应该打印 Guru99。
  11. 将字符串 name2 连接到字符串 name1 的末尾。name1 的值现在是 Guru99John。
  12. 在控制台上打印名为 name1 的字符串的值以及一些文本。它应该打印 Guru99John
  13. 确定名为 name1 的字符串的长度,并将长度值赋给变量 len。
  14. 在控制台上打印 len 变量的值以及其他一些文本。
  15. 如果程序运行正常,main() 函数应返回一个值。
  16. main() 函数体结束。

摘要

  • 字符串是字符序列。
  • 字符串属于 C++ 中的标准字符串类。
  • 我们可以使用 C 风格字符字符串或标准字符串类来声明字符串。
  • strcpy() 函数将一个字符串复制到另一个字符串。
  • strcat() 函数将两个字符串连接起来。
  • strlen() 函数返回字符串的长度。
  • strcmp() 函数比较两个字符串。