13.字符串拼接

13.运算符-字符串拼接


13.1 知识点

用 + 号进行字符串拼接

字符串类型不支持算术运算符进行数学运算,但可以通过 + 号进行字符串拼接。

使用 + 号直接拼接

string str = "123";
str = str + "456";
cout << str << endl; // 输出:123456

str = str + "456" + "123";
cout << str << endl; // 输出:123456456123

使用复合运算符 += 拼接

string str = "1";
str += "234";
cout << str << endl; // 输出:1234

string str2 = "韬老狮";
str += str2 + "123" + "123";
cout << str << endl; // 输出:1234韬老狮123123

注意事项

  1. 不能和数值类型直接拼接
    字符串拼接不支持数值类型,必须先将数值类型转换为字符串。
  2. 可以和字符 char 类型拼接
    示例代码:
    string str = "1";
    str += 'C';
    char c = 'A';
    str = str + c + 'A' + "123";
    cout << str << endl; // 输出:1CAA123
    

避免拼接中类型错误

如下代码可能产生非预期结果,需尽量避免:

// 错误示例
str += c + 'Q';
cout << str << endl; // 结果可能并非预期

原因
运算顺序是先计算右侧的 c + 'Q',两个 char 类型相加时会被转换为 int 进行加法运算,结果为 int,与字符拼接后可能得到一个不可见或错误的字符。

string.append 方法进行字符串拼接

string 类型提供了 append 方法用于拼接字符串。

使用 append 拼接

// 字符串变量.append(字符串或字符串变量);
string str3 = "123";
str3.append("556");
str3.append(str + "123");
cout << str3 << endl; // 输出:1235561CAA123123

13.2 知识点代码

Lesson13_运算符_字符串拼接.cpp

#include <iostream>
using namespace std;
int main()
{
    cout << "字符串拼接\n";

    #pragma region 知识点一 用+号进行字符串拼接

    //之前的算数运算符 是数值类型变量进行数学运算的
    // 而 string 不存在使用算数运算符进行数学运算
    // 但是可以通过+号来进行字符串拼接

    //注意 : 用+号拼接 是用运算符拼接的唯一方法 不能用-*/%....

    //1.直接用+号进行字符串拼接
    string str = "123";
    str = str + "456";
    cout << str << endl;//123456
    str = str + "456" + "123";
    cout << str << endl;//123456456123

    //2.复合运算符 += 进行 字符串拼接
    str = "1";
    str += "234";
    cout << str << endl;//1234
    string str2 = "韬老狮";
    str += str2 + "123" + "123";
    cout << str << endl;//1234韬老狮123123

    //注意:
    // 1.不能和数值类型直接进行拼接
    // 2.可以和字符char进行拼接
    str = "1";
    str += 'C';
    char c = 'A';
    str = str + c + 'A' + "123";
    cout << str << endl;//1CAA123

    //像下面这样写 是要尽量避免的 因为并不能得到我们想要的内容
    //str += c + 'Q';
    //cout << str << endl;//1CAA123
    //原因:
    // 先算右侧 再和左侧进行计算  
    // 右侧 是两个char相加 本质会被转换为 int进行加法运算 
    // 加法运算得到的结果对应的字符 可能并不存在 如果存在也不会是我们想要的结果

    #pragma endregion

    #pragma region 知识点二 用string.append方法进行字符串拼接

    //string 类型中提供的拼接方法
    //字符串变量.append(字符串或字符串变量);
    string str3 = "123";
    str3.append("556");
    str3.append(str + "123");
    cout << str3 << endl;//1235561CAA123123

    #pragma endregion
}

13.3 练习题

定义一个变量存储客户的姓名,然后在屏幕上显示:“你好,XXX”,其中 XXX 代表客户的姓名

string name = "韬老狮";
// cout << "你好," + name << endl;
string strOut = "你好,";
strOut.append(name);
cout << strOut << endl; // 你好,韬老狮

定义两个变量,一个存储客户的姓名,另一个存储年龄,然后在屏幕上显示:“XXX + YYY岁了”。其中 XXX 代表客户的姓名,YYY 代表年龄。

string name2 = "韬老狮";
string age = "18";
cout << name2 + age + "岁了" << endl; // 韬老狮18岁了

输出用户信息:姓名、年龄、邮箱、家庭住址、期望工资。

string name3 = "韬老狮";
string age2 = "18";
string email = "tpaneme@163.com";
string address = "火星深处——广州";
string money = "9999999999";

cout << "姓名:" + name3 << endl
     << "年龄:" + age2 << endl
     << "邮箱:" + email + "\n"
     << "家庭住址:" + address << "\n"
     << "期望薪资:" + money + "\n";

// 输出结果:
// 姓名:韬老狮
// 年龄:18
// 邮箱:tpaneme@163.com
// 家庭住址:火星深处——广州
// 期望薪资:9999999999

请用户输入用户名、年龄、班级,并打印输出。

用户名:***
年龄:**
班级:**
cout << "请输入你的用户名" << endl;
string name4;
cin >> name4;

cout << "请输入你的年龄" << endl;
string age3;
cin >> age3;

cout << "请输入你的班级" << endl;
string classStr;
cin >> classStr;

cout << "用户名:" + name4 << endl
     << "年龄:" + age3 + "\n"
     << "班级:" + classStr << endl;

13.4 练习题代码

Lesson13_练习题.cpp

#include <iostream>
using namespace std;
int main()
{
    std::cout << "字符串拼接练习题\n";

    #pragma region 练习题一

    /*定义一个变量存储客户的姓名,然后再屏幕上显示:“你好,XXX”
    XXX代表客户的姓名*/

    string name = "韬老狮";
    //cout << "你好," + name << endl;
    string strOut = "你好,";
    strOut.append(name);
    cout << strOut << endl;//你好,韬老狮

    #pragma endregion

    #pragma region 练习题二

    /*定义两个变量,一个存储客户的姓名,另一个存储年龄,然后再屏幕上显示:“xxx + yyy岁了”。xxx代表客户的姓名,yyy代表年龄
    举例(韬老狮18岁了)*/

    string name2 = "韬老狮";
    string age = "18";
    cout << name2 + age + "岁了" << endl;//韬老狮18岁了

    #pragma endregion

    #pragma region 练习题三

    //当我们去面试时,前台会要求我们填一张表格,
    //有姓名,年龄,邮箱,家庭住址,期望工资,请把这些信息在控制台输出。

    string name3 = "韬老狮";
    string age2 = "18";
    string email = "tpaneme@163.com";
    string address = "火星深处——广州";
    string money = "9999999999";
    cout << "姓名:" + name3 << endl << "年龄:" + age2 << endl << "邮箱:" + email + "\n" +
            "家庭住址:" + address << "\n" << "期望薪资:" + money + "\n";
    //姓名:韬老狮
    //年龄:18
    //邮箱:tpaneme@163.com
    //家庭住址:火星深处——广州
    //期望薪资:9999999999

    #pragma endregion

    #pragma region 练习题四

    /*请用户输入用户名、年龄、班级,最后一起打印出来
    最终打印结果的格式为:
    用户名:***
    年龄:**
    班级:***/

    cout << "请输入你的用户名" << endl;
    string name4;
    cin >> name4;
    cout << "请输入你的年龄" << endl;
    string age3;
    cin >> age3;
    cout << "请输入你的班级" << endl;
    string classStr;
    cin >> classStr;

    cout << "用户名:" + name4 << endl << "年龄:" + age3 + "\n" + "班级:" + classStr << endl;

    #pragma endregion

}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏