c++中string的常见用法

本文详细介绍了C++中string的使用,包括如何获取字符串长度、判断字符串是否为空,子字符串操作如substr,修改操作如insert、erase、assign、append、replace,以及搜索操作find系列和字符串与数值间的转换函数如to_string、stoi等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

头文件---> #include<string>

常用函数

string s;

获取字符串的字符个数

s.size()

返回s中的字符的个数

判断字符串是否为空

s.empty()

s为空返回true,否则返回false

1.子字符串操作

s.substr(pos,n)

返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符)

    string s = "abcdef";
    string a = s.substr();//abcdef
    string b = s.substr(1);//bcdef
    string c = s.substr(0, 3);//abc
    string d = s.substr(2, -1);//cdef,忽略-1
    string f = s.substr(-1);//错误!

2.修改string的操作

s.insert(pos,args)

在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。

    string s = "abcdef",a,b,c,d,e;
    a = b = c = d = e = s;
    s.insert(0, "A");//Aabcdef
    a.insert(2, "B");//abBcdef
    b.insert(b.size(), "C");//abcdefC
    c.insert(0, 3, '!');//!!!abcdef  在c的首位置插入3个!
    d.insert(d.begin(), 'D');//Dabcdef
    e.insert(0, 'E');//编译错误 无此重载

s.erase(pos,len)

删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用

    string s = "abcde",a,b,c,d;
    a = b = c = d = s;
    s.erase();//""  全部删除
    a.erase(0, 1);//"bcde" 从0开始的1个字符
    b.erase(3);//"abc"  从3开始的所有字符
    c.erase(3, 1);//"abce" 从3开始的一个字符
    d.erase(3, -3);//"abc" 从3开始的所有字符(负数不起作用,不会导致删除指定索引前的元素)

s.assign(args)

将s中的字符替换为args指定的字符。返回一个指向s的引用

    string s = "abcdef",a,b,c,d,e;
    a = b = c = d = e = s;
    s.assign("bca");//bca
    a.assign(s);//bca
    b.assign(2,'@');//@@
    c.assign(b.begin(), b.end());//@@

s.append(args)

将args追加到s。返回一个指向s的引用

    string s = "abcdef",a,b,c,d,e;
    a = b = c = d = e = s;
    s.append("123", 0,2);//abcdef12
    a.append(2, '#');//abcdef##
    b.append("$$");//abcdef$$

s.replace(range,args)

删除s中范围range内的字符,替换为args指定的字符。range或者是一个下标和一个长度,或者是一对指向s的迭代器。返回一个指向s的引用

    string s = "abcdef",a,b,c,d,e;
    a = b = c = d = e = s;
    s.replace(0, s.size(), "aa");//aa
    a.replace(a.begin(), a.end(), "bb");//bb
    b.replace(0,2,"cc");//cccdef
    c.replace(0, 2, 2, 'd');//ddcdef

args可以是下列形式之一;append和assign可以使用所有形式

str不能与s相同,迭代器b和e不能指向s

str(字符串str)

str,pos,len(str中从pos开始最多len个字)

cp,len(从cp指向的字符数组的前(最多)len个字符)

cp(cp指向的以空字符结尾的字符数组)

n,c(n个字符c)

b,e(迭代器b和e指定的范围内的字符)

初始化列表(花括号包围的,以逗号分割的字符列表)

3.string的搜索操作

s.find(args) 查找s中args第一次出现的位置

s.rfind(args) 查找s中args最后一次出现的位置

s.find_first_of(args) 在s中查找args中任何一个字符第一次出现的位置

s.find_last_of(args) 在s中查找args中任何一个字符最后一次出现的位置

s.find_first_not_of(args) 在s中查找第一个不在args中的字符

s.find_last_not_of(args) 在s中查找最后一个不在args中的字符

4.string和数值之间的转换

to_string(val) 

一组重载函数,返回数值val的string表示。val可以是任何算数类型。对每个浮点类型和int或更大的整型,都有相应版本的to_string(小整型会被提升)

    int a = 10;
    cout << to_string(a) << endl;//"10"
    double b = 13.2;
    cout << to_string(b) << endl;//"13.200000"
    cout << to_string(b)[2]<< endl;//"."
    short c = 21;
    cout << to_string(c) << endl;//"21"
    long d = 8999999;
    cout << to_string(d) << endl;//"8999999"
    float e = 11.32;
    cout << to_string(e) << endl;//"11.320000"

int stoi(s,p,b)

long stol(s,p,b)

unsigned long stoul(s,p,b)

long long stoll(s,p,b)

unnsigned long long stoull(s,p,b)

返回s的起始子串(表示整数内容)的数值,b表示转换所用的基数,默认值为10,p是size_t指针,用来保存s中第一个非数值字符的下标,p默认值为0,即函数不保存下标

    cout << typeid(stoi(a)).name() << endl;//int
    cout << typeid(stoll(a)).name() <<stoi(d)<< endl;//__int64  12

float stof(s,p)

double stod(s,p)

long double stold(s,p)

返回s的起始子串(表示浮点数内容)的数值,参数p的作用于整数转换函数相同

    cout << typeid(stod(b)).name() << endl;//double
    cout << typeid(stof(c)).name() << endl;//float

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值