C++ 字符串函数:strcpy()、strcat()、strlen()、strcmp()
⚡ 智能摘要
C++ 字符串函数(例如 strcpy、strcat、strlen 和 strcmp)允许程序复制、连接、测量和比较文本。本资源解释了什么是字符串,如何声明 C 风格的字符串和 std::string 类型的字符串,如何访问字符串的值,以及如何应用核心字符串函数并给出示例。

什么是字符串?
字符串是字符的序列。 C++ string 是 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’。
标准::字符串
标准 C++ 库提供了字符串类,支持各种字符串操作。它的写法是 std::string。
要使用此类,我们必须首先使用 #include 预处理器将其包含到我们的工作区中,如下所示:
#include <string>
接下来,我们可以使用 string 关键字声明字符串。例如:
string name = "John";
上述语句将创建一个名为 name 的字符串来保存值 John。
访问字符串值
In 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; }
输出:
以下是代码截图:
Code 说明:
- 在我们的代码中包含 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; }
输出:
以下是代码截图:
Code 说明:
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 在我们的代码中包含标准字符串类。
- 包括 std 命名空间,以便使用其类和函数而无需调用它。
- 调用 main() 函数,程序逻辑应该添加到该函数中。{ 标记 main() 函数体的开始。
- 声明一个字符串并将其命名为 name。该字符串将存储值。 Guru99.
- 在控制台上打印字符串名称的值以及一些文本。
- 如果程序运行正常,main() 函数应该返回一个值。
- main() 函数体结束。
字符串函数 C++
您可能经常想要操作字符串。 C++ 它提供了一系列可用于此目的的函数。这些函数在以下位置定义:由于需要使用头部信息,所以我们必须将其包含在代码中才能使用这些函数。让我们讨论一些例子:
字符串()
这是字符串复制函数。它将一个字符串复制到另一个字符串中。
语法:
strcpy(string1, string2);
该函数的两个参数 string1 和 string2 均为字符串。该函数会将字符串 string2 复制到 string1 中。
字符串()
这是字符串连接函数。它连接字符串。
语法:
strcat(string1, string2);
该函数的两个参数 string1 和 string2 是要连接的两个字符串。上述函数会将字符串 string2 连接到字符串 string1 的末尾。
字符串()
这是字符串长度函数。它返回作为参数传递给它的字符串的长度。
语法:
strlen(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; }
输出:
以下是代码截图:
Code 说明:
- 在我们的代码中包含 iostream 头文件。它将允许我们从控制台读取和写入。
- 包括标准我们代码中的头部信息。
- 包括 std 命名空间,以便使用其类和函数而无需调用它。
- 调用 main() 函数,程序逻辑应该添加到该函数中。{ 标记 main() 函数体的开始。
- 声明一个长度为 10 个字符的字符串,并将其命名为 name1。该字符串将存储值。 Guru99.
- 声明一个包含 10 个字符的字符串,并将其命名为 name2。该字符串将存储值 John。
- 声明一个由 10 个字符组成的字符串并将其命名为 name3。
- 声明 整型变量 名为 len。
- 将字符串 name1 复制到字符串 name3 中。
- 在控制台上打印字符串 name3 的值以及一些文本。它应该打印 Guru99.
- 将字符串 name2 连接到字符串 name1 的末尾。name1 的值现在是 Guru99约翰。
- 在控制台上打印字符串 name1 的值以及一些文本。它应该打印 Guru99约翰。
- 确定名为 name1 的字符串的长度,并将长度值赋给变量 len。
- 在控制台上打印 len 变量的值以及其他一些文本。
- 如果程序运行正常,main() 函数应该返回一个值。
- main() 函数体结束。




