C++ 字符串:strcpy()、strcat()、strlen()、strcmp() 示例
什么是字符串?
字符串是一个字符序列。 C++ 字符串是 std::string 类的对象。字符是存储的字节序列,允许访问单个字符字节。
C++ 字符串动态分配内存。如果需要,可以在运行时为字符串分配更多内存。由于没有内存预分配,所以不会浪费内存。我们可以对字符串进行各种操作,包括比较、连接、转换等。
在本 C++ 教程中,您将学习:
- 什么是字符串?
- 声明字符串
- C 风格字符串
- std::string
- 访问字符串值
- 字符串函数:
- strcpy()
- strcat()
- strlen()
- strcmp()
声明字符串
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++ 库提供了支持各种字符串操作的字符串类。它被写为 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() 函数主体的开始。
- 声明一串字符并为其命名。该字符串将存储值 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() 函数主体的开始。
- 声明一个字符串并为其命名。该字符串将存储值 Guru99。
- 在控制台上打印字符串名称的值以及一些文本。
- 如果程序运行良好,main() 函数应该返回一个值。
- main() 函数主体的结尾。
字符串函数:
你会经常想要操作字符串。 C++ 提供了广泛的函数供您使用。这些函数是在 CString 类中定义的,因此,我们必须将其包含在我们的代码中才能使用这些函数。让我们讨论一些:
strcpy()
这是字符串复制功能。它将一个字符串复制到另一个字符串中。
语法:
strcpy(string1, string2);
函数的两个参数 string1 和 string2 是字符串。该函数会将字符串string1复制到字符串1中。
strcat()
这是字符串连接函数。它连接字符串。
语法:
strcat(string1, string2);
函数的两个参数 string1 和 string2 是要连接的字符串。上述函数会将字符串 string2 连接到字符串 string1 的末尾。
strlen()
这是字符串长度函数。它返回作为参数传递给它的字符串的长度。
语法:
strnlen(string1)
参数 string1 是待确定长度的字符串的名称。上述函数将返回字符串 string1 的长度。
strcmp()
这是字符串比较函数。它用于字符串比较。
语法:
strcmp(string1, string2);
如果字符串 string1 和 string2 相似,上述函数将返回 0,如果 string1
示例:
下面的例子演示了如何使用上面的字符串函数:
#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的字符串的长度,并将length的值赋给变量len。
- 在控制台上打印 len 变量的值以及其他一些文本。
- 如果程序运行良好,main() 函数应该返回一个值。
- main() 函数主体的结尾。
总结
- 字符串是一个字符序列。
- 字符串属于 C++ 中的标准字符串类。
- 我们可以使用 C 风格的字符串或标准字符串类来声明字符串。
- strcpy() 函数将一个字符串复制到另一个字符串。
- strcat() 函数连接两个函数。
- strlen() 函数返回函数的长度。
- strcmp() 函数比较两个字符串。
C语言