字符串连接是指将一个元素添加到现有元素的过程。在此上下文中,字符串连接是指将两个(或更多)字符串合并的方法。因此,结果字符串是初始字符串与附加字符串的组合。
在 C++ 中有几种方法可以连接字符串,其中包括:
下面将详细介绍这些方法。让我们深入了解这些概念。
使用 string::append()
函数进行字符串连接
string
是在 <string>
头文件中定义的一个类,并且 append()
函数是该类的一个继承方法。此方法用于将给定的字符串附加到初始字符串上。
语法
使用 append()
方法连接字符串的语法如下:
initial_string.append(new_string);
initial_string.append("this is new");
参数
string::append()
函数接受一个字符串作为参数。这个字符串可以显式传递或者作为一个对象传递。
append()
函数示例
下面的示例代码用于使用 append()
方法连接字符串:
#include <iostream>
using namespace std;
int main() {
string initial_string("I Love TP.");
string new_string(" I am new here.");
initial_string.append(new_string);
initial_string.append(" Could you help me?");
cout << initial_string << endl;
return 0;
}
输出
I Love TP. I am new here. Could you help me?
使用 +
运算符进行字符串连接
将字符串相加的最简单方法之一就是使用 +
运算符对两个或多个字符串进行操作。这可以在原地完成(即不创建新的字符串),或者在一个新的字符串对象上进行。这是 C++ 编程语言较新的一项特性。
语法
使用 +
运算符连接字符串的语法如下:
new_string = initial_string + added_string;
initial_string += added_string;
在这里,新的字符串可以在原地添加,也可以通过创建一个新的字符串对象来添加。
示例
下面的示例代码用于使用 +
运算符连接字符串:
#include <iostream>
using namespace std;
int main() {
string initial_string("I Love TP.");
string new_string(" I am new here.");
string a = "Hey !!! " + initial_string;
a += new_string;
a += " Could you help me? ";
cout << a << endl;
return 0;
}
输出
Hey !!! I Love TP. I am new here. Could you help me?
使用 for
循环进行字符串连接
我们可以使用一个简单的 for
循环从新字符串的开始处到结束处迭代,并且每次迭代都将该字符添加到初始字符串中。这可以在原地完成,或者使用一个新的字符串对象。这种类型的连接在 C 风格字符串(即字符数组)中也是可能的。
语法
使用 for
循环从字符串的开头到结尾连接字符串的语法如下:
for(int i=0; i<s.length(); i++){
initial += s[i];
}
示例
下面的示例代码用于使用 for
循环从字符串的开头到结尾连接字符串:
#include <iostream>
using namespace std;
int main(){
string initial_string("I Love TP.");
string new_string(" I am new here.");
for(int i=0; i<new_string.size(); i++){
initial_string += new_string[i];
}
cout << initial_string << endl;
return 0;
}
输出
I Love TP. I am new here.
使用 while
循环进行字符串连接
我们还可以使用一个简单的 while
循环,直到到达字符串的末尾,并且在每次迭代时都将相应的字符添加到初始字符串中。这可以在原地完成,或者使用一个新的字符串对象。这种类型的连接在 C 风格字符串(即字符数组)中也是可能的。
语法
使用 while
循环从字符串的开头到结尾连接字符串的语法如下:
for(int i=0; i<s.length(); i++){
initial += s[i];
}
示例
下面的示例代码用于使用 while
循环从字符串的开头到结尾连接字符串:
#include <iostream>
using namespace std;
int main() {
string initial_string("I Love TP.");
string new_string(" I am new here.");
int i = 0;
while(new_string[i] != '\0'){
initial_string += new_string[i];
i++;
}
cout << initial_string << endl;
return 0;
}
使用基于范围的循环进行字符串连接
我们还可以使用一个基于范围的循环,它会自动遍历整个字符串并且将每个字符添加到初始字符串中。这可以在原地完成,或者使用一个新的字符串对象。
语法
使用基于范围的循环从字符串的开头到结尾连接字符串的语法如下:
for(char c : s){
initial += c;
}
示例
下面的示例代码用于使用基于范围的循环从字符串的开头到结尾连接字符串:
#include <iostream>
using namespace std;
int main() {
string initial_string("I Love TP.");
string new_string(" I am new here.");
for(char c : new_string){
initial_string += c;
}
cout << initial_string << endl;
return 0;
}
输出
I Love TP. I am new here.
使用 strcat()
函数进行字符串连接
我们可以使用 strcat()
函数在 C++ 中连接字符串。但是,此方法不适用于字符串对象,它只适用于 C 风格字符串,即字符数组。此方法定义在 <string.h>
头文件中。
语法
使用 strcat()
方法连接字符串的语法如下:
strcat(s1, s2);
参数
在这里,s1
和 s2
是作为参数传递给 strcat()
方法的两个字符数组(即字符串)。
示例
下面的示例代码用于使用 strcat()
方法连接字符串:
#include <bits/stdc++.h>
using namespace std;
int main(){
char s1[] = "I love ";
char s2[] = " TP. Could you help me? ";
strcat(s1, s2);
cout << s1 << endl;
return 0;
}
输出
I love TP. Could you help me?
使用继承进行字符串连接
我们可以使用 strcat()
函数在 C++ 中连接字符串。但是,此方法不适用于字符串对象,它只适用于 C 风格字符串,即字符数组。此方法定义在 <string.h>
头文件中。
语法
使用继承方法在面向对象编程(OOP)概念中连接字符串的语法如下:
strcat(s1, s2);
示例
下面的示例代码用于使用继承方法在面向对象编程(OOP)概念中连接字符串:
#include <bits/stdc++.h>
using namespace std;
class parent {
public:
virtual string concatenate(string s1, string s2) = 0;
};
class child : public parent {
public:
string concatenate (string s1, string s2){
s1 += s2;
return s1;
}
};
int main() {
child ch1;
cout << ch1.concatenate ("I love ", "TP !!!");
return 0;
}
输出
I love TP !!!
使用带有面向对象编程(OOP)特性的友元函数进行字符串连接
友元类可以访问其他类中作为友元声明的私有和受保护成员。有时,允许特定类访问其他类的私有和受保护成员是有用的。
因此,我们利用这个友元类来声明一个辅助方法,然后使用 strcat()
函数处理 C 风格字符串。
语法
使用带有 C++ 中的友元方法连接字符串的语法如下:
class A {
string s1 = [value];
string s2 = [value];
friend void helper(A obj);
}
helper(A) {
strcat(obj.s1, obj.s2);
};
示例
下面的示例代码用于使用带有 C++ 中的友元方法连接字符串:
#include <bits/stdc++.h>
using namespace std;
class concatenate {
public:
char s1[20] = "I love TP !!!";
char s2[20] = "Hey... ";
friend void helper(concatenate par1);
};
void helper (concatenate par1) {
strcat (par1.s2, par1.s1);
cout << par1.s2;
}
int main() {
concatenate par1;
helper(par1);
return 0;
}
输出
Hey... I love TP !!!