C++ 字符串补充(一)

1、string类型和const char *类型

const char类型是C语言中用来表示字符串的一种数据类型,通常以字符数组的形式表示,以空字符'\0'结尾。而string类型是C++中的标准库中提供的字符串类,是一个封装了char数组的字符串对象,可以动态地改变大小,并提供了许多字符串操作的方法。在使用上,const char类型需要手动管理内存,而string类型则由类自动管理内存,更加方便和安全。如果你在C++中进行字符串操作,推荐使用string类型。

2、C++中默认的字符串类型

在C++中,如果函数参数写了字符串,默认是const char*类型,而不是string类型。如果想要传递string类型的字符串作为函数参数,可以将字符串转换为string类型再传递。

例如:将两个字符串进行大小对比。

template<typename T>
T maxNum(T a,T b){
    cout<<"使用通用函数模板:";
    if(a > b)
    {
        return a;
    }
    else
    {
        return b;
    }
}
template<>
string maxNum<string>(string a,string b)//比较字符串长度
{
    cout<<"使用(string)函数模板特化:";
    if(a > b)
    {
        return a;
    }
    else
    {
        return b;
    }
}
int main()
{
    string str1 = "Hello";
    string str2 = "World";
    string num3 = maxNum(str1,str2);
    cout<<"num3 = "<<num3<<endl;
    string num4 = maxNum("Hello","World");
    cout<<"num4 = "<<num4<<endl;
    return 0;
}

如果使用上述特化模板函数,直接将字符串当形参输入,最后输出还是通用 模板函数

运行结果:

使用(string)函数模板特化:num3 = World
使用通用函数模板:num4 = World

要修改这个问题,需要重新写一个 const char*类型的特化函数模板。

template<>
const char *maxNum<const char *>(const char *a,const char *b)
{
    cout<<"使用(const char*)函数模板特化:";
    if(a > b)
    {
        return a;
    }
    else
    {
        return b;
    }
}

运行结果:

使用(string)函数模板特化:num3 = World
使用(const char*)函数模板特化:num4 = World

 3、字符串长度

使用<string>库,使用length()函数

代码示例:

string compare(){           
    return a.length()>b.length()?a:b;
}

4、字符串拼接

使用<cstring>库,使用strcat()函数

代码示例:

strcat(newStr,other.str);//将other.str字符串拼接到newStr字符串末尾

5、字符串赋值

 使用<cstring>库,使用strcpy()函数

注:字符串无法通过“=”赋值运算符直接赋值,只能通过复制的方法,将一个字符串中的内容复制到对应的字符串中。

代码示例:

strcpy(str,s);//将字符数组s中的值赋值到str中

6、字符串大小对比

比较两个字符串是否相等。

 使用<cstring>库,使用strcmp()函数

注:如果两个字符串相等(每个字符都一样),输出为0

代码示例:

if(strcmp(other.str,this->str) == 0)//如果other.str和str字符串相等输出True
{
    return true;
}

注: 在C++中,字符串是以字符数组的形式存储的,如果直接使用">"和"<"进行比较,实际上比较的是字符串在内存中的地址,并不是比较字符串的大小。

如果要比较两个字符串大小,可以使用compare()方法,使用<string>库

代码示例:

#include <iostream>
#include <string>

int main() {
    std::string str1 = "hello";
    std::string str2 = "world";

    if (str1.compare(str2) > 0) {
        std::cout << "str1 大于 str2" << std::endl;
    } else if (str1.compare(str2) < 0) {
        std::cout << "str1 小于 str2" << std::endl;
    } else {
        std::cout << "str1 等于 str2" << std::endl;
    }

    return 0;
}

运行结果

str1 小于 str2

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值