String 类(三)

一、String类的拷贝和拼接


① 使用string的函数:append<拼接>和assign<拷贝>

拷贝和拼接都可指定 位置和个数,代码如下:

#include <iostream>
#include <string.h>

using namespace std;

/*string类型拷贝assign和拼接append*/

int main()
{
    string s1 = "Dante";
    string s2 = "Vivan";
    string s3;
    cout<<"拼接从s2 0的位置开始的前"<<s2.size()<<"个字节"<<"到s2后面"<<endl;

    s1.append(s2,0,s2.size());

    cout<<"拼接之后 s1:"<<s1<<endl;

    cout<<"从s1 0 的位置开始的前"<<s1.size()<<"个字节拷贝到s3"<<endl

    s3.assign(s1,0,s1.size());
    cout<<"拷贝之后s3:"<<s3<<endl;

    return 0;
}

运行结果:

拼接从s2 0的位置开始的前5个字节到s2后面
拼接之后 s1:DanteVivan
从s1 0 的位置开始的前10个字节拷贝到s3
拷贝之后s3:DanteVivan

二、关于String类引索超出边界

已知字符串:
     Sting first_novel("V");
则下标:
    char ch = first_novel[1];,返回一个未定义的字符串,超出检索范围,
    下标操作不提供范围检错,高质量的代码不希望出现这种错误。
    
则可使用string中的at函数,如果越界则返回out_of_range表示引索超出范围。
#include <iostream>
#include <string.h>

using namespace std;

/*测试string类型范围函数*/
int elem_count(const string &word,int index);

int elem_count(const string &word,int index)
{

    char ch = word.at(index); 
    return 0;
}

int main()
{
    string s1("he");
    elem_count(s1,7);
    return 0;
}

运行结果:

terminate called after throwing an instance of 'std::out_of_range'        
what():  basic_string::at: __n (which is 7) >= this->size() (which is 2)
Aborted (core dumped)

引索越界导致段错误!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值