C++ 基础

C++ 主页 C++ 概述 C++ 环境设置 C++ 基本语法 C++ 注释 C++ Hello World C++ 省略命名空间 C++ 标记 C++ 常量/字面量 C++ 关键字 C++ 标识符 C++ 数据类型 C++ 数字数据类型 C++ 字符数据类型 C++ 布尔数据类型 C++ 变量类型 C++ 变量作用域 C++ 多变量 C++ 基本输入/输出 C++ 修饰符类型 C++ 存储类 C++ 数字 C++ 枚举 C++ 枚举类 C++ 引用 C++ 日期和时间

C++ 运算符

C++ 运算符 C++ 算术运算符 C++ 关系运算符 C++ 逻辑运算符 C++ 位运算符 C++ 赋值运算符 C++ sizeof 运算符 C++ 条件运算符 C++ 逗号运算符 C++ 成员运算符 C++ 强制类型转换运算符 C++ 指针运算符 C++ 运算符优先级 C++ 一元运算符

C++ 控制语句

C++ 决策语句 C++ if 语句 C++ if else 语句 C++ 嵌套 if 语句 C++ switch 语句 C++ 嵌套 switch语句 C++ 循环类型 C++ while 循环 C++ for 循环 C++ do while 循环 C++ Foreach 循环 C++ 嵌套循环 C++ break 语句 C++ continue 语句 C++ goto 语句

C++ 字符串

C++ 字符串 C++ 循环遍历字符串 C++ 字符串长度 C++ 字符串连接 C++ 字符串比较

C++ 函数

C++ 函数 C++ 多函数参数 C++ 递归函数 C++ 返回值 C++ 函数重载 C++ 函数重写 C++ 默认参数

C++ 数组

C++ 数组 C++ 多维数组 C++ 指向数组的指针 C++ 将数组传递给函数 C++ 从函数返回数组

C++ 结构 &联合

C++ 结构 C++ 联合

C++ 指针

C++ 指针 C++ 解引用 C++ 修改指针

C++ 类和对象

C++ 面向对象 C++ 类 &对象 C++ 类成员函数 C++ 类访问修饰符 C++ 静态类成员 C++ 静态数据成员 C++ 静态成员函数 C++ 内联函数 C++ this 指针 C++ 友元函数 C++ 指向类的指针

C++ 构造函数

C++ 构造函数 &析构函数 C++ 默认构造函数 C++ 参数化构造函数 C++ 复制构造函数 C++ 构造函数重载 C++ 带默认参数的构造函数 C++ 委托构造函数 C++ 构造函数初始化列表 C++ 使用构造函数动态初始化

C++ 继承

C++ 继承 C++ 多重继承 C++ 多级继承

C++ 面向对象

C++ 重载 C++ 多态性 C++ 抽象 C++ 封装 C++ 接口 C++ 虚函数 C++ 纯虚函数与抽象类

C++ 文件处理

C++ 文件和流 C++ 文件读取

C++ 进阶

C++ 异常处理 C++ 动态内存 C++ 命名空间 C++ 模板 C++ 预处理器 C++ 信号处理 C++ 多线程 C++ Web 编程 C++ 套接字编程 C++ 并发 C++ 高级概念 C++ Lambda 表达式 C++ unordered_multiset

C++ 实用资源

C++ 问答 C++ 快速指南 C++ 速查表 C++ STL 教程 C++ 标准库 C++ 实用资源 C++ 讨论


C++ 字符串连接

字符串连接是将一个元素添加到现有元素的过程。在本文中,字符串连接是指将两个(或多个)字符串相加的方法。因此,结果字符串是初始字符串和添加字符串的组合。

C++ 中有几种连接字符串的方法,其中一些方法如下:

  • 使用 string::append() 函数
  • 使用 '+' 运算符
  • 使用 strcat() 函数 处理 C 风格的字符串
  • 使用 for 循环
  • 使用 while 循环
  • 使用 基于范围的 循环
  • 使用 继承
  • 在 OOPS 中使用 友元函数

本章接下来的几篇文章将详细解释这些方法。那么,让我们深入探讨这些概念。

使用 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.");

   //使用带有对象参数的 append 函数
   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;
   //inplace addition

   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];
   }
   //使用 for 循环遍历 new_string

   cout << initial_string << endl;
   return 0;
}

输出

I Love TP. I am new here.

使用 while 循环计算字符串长度

我们也可以使用一个简单的 while 循环。此循环一直运行到字符串末尾,每次迭代时,我们都可以将相应的字符添加到初始字符串中。这可以就地完成,也可以通过使用新的 string 对象 来完成。这种类型的连接也可以在 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++;
   }
   //使用 while 循环迭代 new_string

   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() 函数进行字符串连接

在 C++ 中,我们可以使用 strcat() 函数连接字符串。但是,此方法不适用于字符串对象,仅适用于 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 中

   strcat(s1,s2);
   cout << s1 << endl;
   return 0;
}

输出

I love  TP. Could you help me? 

使用继承进行字符串连接

在 C++ 中,我们可以使用 strcat() 函数连接字符串。但是,此方法不适用于字符串对象,它仅适用于 C 风格的字符串,即字符数组。此方法定义在 <string.h> 头文件中。

语法

以下语法用于在 OOP 概念中使用继承方法连接字符串 -

strcat(s1,s2);

示例

以下示例代码用于在 OOP 概念中使用继承方法连接字符串 -

#include <bits/stdc++.h>
using namespace std; 

//parent class
class parent { 
   public:
      virtual string concatenate(string s1, string s2) = 0;
      //创建要继承的虚方法
};

//子类
class child: 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 !!!

使用友元函数进行字符串连接,并实现面向对象编程 (OOPS)

友元类可以访问其他类的私有和受保护成员,只要它被声明为友元类。有时,允许特定类访问其他类的私有和受保护成员会很有用。

因此,我们利用这个友元类声明一个辅助方法,然后使用 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 !!!