三串合一(指针与字符数组)c++
时间: 2024-09-20 20:15:13 浏览: 61
在 C++ 中,将三个字符串(即指针、字符数组和 C 风格字符串)合并通常涉及到指针的操作。这里有几个不同的方法:
1. **使用 `std::string`**:
如果你的目标是使用标准库,可以直接将它们转换为 `std::string` 然后相加。例如:
```cpp
std::string str1 = "Hello";
char* ptr2 = "World";
std::string str3 = "!";
std::string combined = str1 + " " + std::string(ptr2) + str3;
```
2. **使用字符数组**:
将指针指向的字符串和字符数组拼接起来,然后复制到一个新的字符数组中:
```cpp
char* str1 = "Hello";
char str2[] = "World";
char combined[strlen(str1) + strlen(str2) + sizeof(str3) - 1]; // 空余空间减1避免溢出
strcpy(combined, str1);
strcat(combined, " ");
strcat(combined, str2);
strcat(combined, str3);
```
3. **直接操作指针**:
对于较老式的 C 编程风格,可以逐个字符地连接:
```cpp
char* str1 = "Hello";
char* str2 = "World";
char* str3 = "!";
char combined[50];
combined[0] = '\0'; // 初始化空字符串
for (int i = 0; str1[i] != '\0'; i++) {
combined[i] = str1[i];
}
combined[i++] = ' '; // 添加空格
for (; str2[i] != '\0'; i++) {
combined[i] = str2[i];
}
combined[i++] = str3[i]; // 注意最后一个字符串可能会有额外的元素
combined[i] = '\0';
```
阅读全文