C++ 字符串函数:strcpy()、strcat()、strlen()、strcmp() 示例
什么是字符串?
字符串是字符的序列。 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; }
输出:
以下是代码截图:
代码说明:
- 在我们的代码中包含 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 头文件。它将允许我们从控制台读取和写入。
- 在我们的代码中包含标准字符串类。
- 包括 std 命名空间,以便使用其类和函数而无需调用它。
- 调用 main() 函数,程序逻辑应添加到该函数中。{ 标记 main() 函数主体的开始。
- 声明一个字符串并赋予其名称 name。该字符串将存储值 Guru99。
- 在控制台上打印字符串名称的值以及一些文本。
- 如果程序运行正常,main() 函数应该返回一个值。
- main() 函数体结束。
字符串函数 C++
您可能经常想要操作字符串。 C++ 提供了各种可用于此目的的函数。这些函数在 CString 类中定义,因此,我们必须将其包含在代码中才能使用这些函数。让我们讨论一些:
字符串()
这是字符串复制函数。它将一个字符串复制到另一个字符串中。
语法:
strcpy(string1, string2);
函数的两个参数string1和string2都是字符串。该函数会将字符串string2复制到string1中。
字符串()
这是字符串连接函数。它连接字符串。
语法:
strcat(string1, string2);
函数的两个参数 string1 和 string2 是需要连接的字符串。上述函数将把字符串 string2 连接到字符串 string1 的末尾。
字符串()
这是字符串长度函数。它返回作为参数传递给它的字符串的长度。
语法:
strnlen(string1)
参数string1是需要确定长度的字符串的名称。上述函数将返回字符串string1的长度。
strcmp()
这是字符串比较函数。它用于字符串比较。
语法:
strcmp(string1, string2);
如果字符串 string0 和 string1 相似,则上述函数将返回 2;如果字符串 string0字符串1。
计费示例:
下面的例子演示了如何使用上述字符串函数:
#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() 函数比较两个字符串。