C++ 字符串

(一)C++ 字符串的简介

在C++ 中,字符串类型实际上是通过字符串类 string类 来操作的。这种类方式的操作使得字符串的处理更加方便。要使用C++ 中的 string类 需要添加string头文件 #include <string>


(二)C++ 字符串的使用

(1)赋值

C++ 中有多种对字符串赋值的方式

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str_1 = "张三";
    string str_2("李四");
    string str_3(str_1);
    string str_4(str_1 + str_2);
    string str_5(3 , 'a');
    
    cout << "str_1 = " << str_1 << endl;
    cout << "str_2 = " << str_2 << endl;
    cout << "str_3 = " << str_3 << endl;
    cout << "str_4 = " << str_4 << endl;
    cout << "str_5 = " << str_5 << endl;
    
    return 0;
}
/*
输出结果:
str_1 = 张三
str_2 = 李四
str_3 = 张三
str_4 = 张三李四
str_5 = aaa
*/

可以说是格式各样,千奇百怪;想怎么玩就怎么玩,当然还有更多方式,等待我们去尝试。


(2)字符串的拼接

字符串的拼接有两种方式

1. + 运算符

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str_1("Hello");
    string str_2(" C++");

    cout << str_1 + str_2 << endl;    
}

/*
输出结果:
Hello C+
*/

2. append() 函数

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello");
   
    str.append(" C++");
    cout << str << endl;
     
}
/*
输出结果:
Hello C++
*/

由此可见 C++ 对字符串的拼接操作比 C语言 方便了不是一点两点 好用爱用


(3)查找与替换

string 类提供了 find()replace() 函数 分别用于查找和替换字符串

  • 示例代码:
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("张三和李四是好朋友");

    // 字符串的查找
    int pos = str.find("张三"); // 找到返回起始位置
    cout << "张三在 " << pos << "~" << strlen("张三")-1 << " 位置" << endl;

    // 字符串的替换
    // 第一个参数是起始位置 第二个参数是替换几个字符 第三个参数是要替换的字符串
    str.replace(0 , strlen("王五") , "王五"); 
    cout << "str = " << str << endl;
     
}
/*
输出结果:
张三在 0~5 位置
str = 王五和李四是好朋友
*/

(4)字符串的比较

C++ 中可以直接使用关系运算符 (==!=<>)来比较字符串的大小 按 ASCII码 值大小进行比较

  • 示例代码
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str_1("aBc");
    string str_2("abc");

    if (str_1 == str_2)
    {
        cout << "str_1 == str_2" << endl;
    }
    else if (str_1 > str_2)
    {
        cout << "str_1 > str_2" << endl;
    }
    else if (str_1 < str_2)
    {
        cout << "str_1 < str_2" << endl;
    }
}
/*
输出结果:
str_1 < str_2
*/

(5)字符串的存取

可以使用下标操作符 []at() 方法来访问和修改字符串中的字符

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello C++");
    // 字符串的存取
    char ch_1 = str.at(0);// 越界会报错
    cout << "c = " << ch_1 << endl;

    char ch_2 = str[0];   // 越界不会报错
    cout << "c = " << ch_2 << endl;
}

使用下标操作符 [] 时 若访问越界不会报错 但使用at() 时 访问越界会报错。

(6)字符串插入

使用 insert() 函数可在指定位置是插入指定字符串

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello");
    // 字符串的插入
    // 第一个参数 要插入的起始位置 第二个参数 要插入的字符串
    str.insert(5 , " C++");
    cout << "str = " << str << endl;
}
/*
输出结果:
str = Hello C++
*/

(7)字符串的删除

使用 erase() 函数可以删除字符串中的部分内容

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello C++");
    // 第一个参数 要删除的起始位置 第二个参数 要删除字符串的长度
    str.erase(5 , strlen(" C++"));
    cout << "str = " << str << endl;
}
/*
输出结果:
str = Hello
*/

(8)字符串清空

使用 clear() 函数可以清空字符串的内容

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello C++");
    
    str.clear();
    cout << "str = " << str << endl;
}
/*
输出结果:
str = 
*/

(9)风格转换

1. C++ 风格字符串转换为 C 风格字符串

使用 c_str() 函数可以将 C++ 字符串转换为 C 风格字符串

  • 示例代码
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    string str("Hello C++");
    
    const char * str_c = str.c_str();
    cout << "str_c = " << str_c << endl;
}
/*
输出结果:
str_c = Hello C++
*/

2. C 风格字符串转换为 C++ 风格字符串

直接将 C 风格字符串赋值给 C++ 的 string 类即可,C++ 会自动转换

  • 示例代码:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char const *argv[])
{
    const char * str_c = "Hello C++";
    string str = str_c;
    
    cout << "str = " << str <<endl;
}
/*
输出结果:
str = Hello C++
*/

注意 定义 C 风格字符串时 要加 const

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值