字符串
发表于:2024-12-11 | 分类: C++
字数统计: 562 | 阅读时长: 2分钟 | 阅读量:

char *String

对比

特性 C风格字符串 (char *) C++字符串 (std::string)
存储方式 \0结尾 \0结尾
内存管理 动态分配时手动分配和释放 自动管理内存
安全性 易发生缓冲区溢出或指针错误 更加安全
性能 较高(不涉及复杂内存管理) 较低(增加了安全性与功能的开销)
可扩展性 功能有限 提供丰富功能,如拼接、查找、替换等
  • 使用C开发,推荐使用char[]char*
  • 使用C++开发,推荐使用String

char *和char[]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <string.h>

int main() {
// 定义两个静态分配的字符串
char str1[20] = "Hello";
char str2[] = "World";

// 拼接字符串到新数组中
char result[40]; // 结果字符串数组
strcpy(result, str1); // 复制 str1 到 result
strcat(result, " "); // 添加一个空格
strcat(result, str2); // 拼接 str2

printf("Concatenated String: %s\n", result);

// 比较字符串
if (strcmp(str1, str2) == 0) {
printf("str1 and str2 are equal.\n");
} else {
printf("str1 and str2 are not equal.\n");
}

// 查找字符
char *pos = strchr(result, 'W'); // 查找字符 'W'
if (pos != NULL) {
printf("Character 'W' found at position: %ld\n", pos - result);
}

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
// 动态分配内存存储字符串
char *str1 = (char *)malloc(20 * sizeof(char));
char *str2 = (char *)malloc(20 * sizeof(char));

// 初始化字符串
strcpy(str1, "Dynamic");
strcpy(str2, "Memory");

// 拼接字符串
char *result = (char *)malloc(50 * sizeof(char));
strcpy(result, str1);
strcat(result, " ");
strcat(result, str2);

printf("Concatenated String: %s\n", result);

// 释放内存
free(str1);
free(str2);
free(result);

return 0;
}

String

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>

int main() {
std::string str1 = "Hello";
std::string str2 = "World";

// 拼接字符串
std::string result = str1 + " " + str2;

std::cout << "Concatenated String: " << result << std::endl;

// 字符串长度
std::cout << "Length of result: " << result.length() << std::endl;

// 查找子字符串
size_t pos = result.find("World");
if (pos != std::string::npos) {
std::cout << "'World' found at position: " << pos << std::endl;
}

// 提取子字符串
std::string sub = result.substr(0, 5);
std::cout << "Substring: " << sub << std::endl;

return 0;
}
上一篇:
友元函数
下一篇:
C++类的static