字符串处理之string

7 篇文章 0 订阅

字符串处理之string

  • 前言:
    在机试当中,对于字符串的处理中使用string的话往往能够带来方便。
    实例:

输出目录结构(路径打印)

string输入输出问题。

  • 在机试时,为了节约时间,使用scanf和printf来输入输出字符串,但是该方法不能够输入输出string类型的字符串。

解决办法:

//输入时
char str[55];
scanf("%s", str);
s = str;  //之后就可以用string的操作对s进行操作了
//输出时
printf("%s\n", s.c_str());//printf不能直接输出string类型,要 s.c_str()转化

string排序问题。

bool cmp(string a, string b){       //由于char数组不能这么排序,所以使用string
    return a<b;
}

... ...

sort(v.begin(), v.end(), cmp);  //v为vector<string> 类型

string的查找问题

  1. vector v 中存放很多string的数组,在v中查找某个数组。
find(v.begin(), v.end(), s) //查找s,返回iterator指针,当表示没有找到时:返回v.end()
  1. 在string中查找某个特定字符。
s.find('a')  //在字符串s中查找a字符,返回该字符的位置下标
//当表示没找到时:
s.find('a')==string::npos 

//从特定位置开始,查找第一个要找的字符串:
a = "hah"
int pos = s.find(a, startPos); //从string中下标startPos位置中开始查找a字符串
  1. 在string中查找最后某个字符时:
s.find_last_of('a') //查找s字符串中最后一个a的位置
//当表示没找到时:
s.find_last_of('a')==string::npos 

string的删除

删除字符串中的一段字符:

s.erase(s.find_last_of('\\'), s.length());  //删除最后一个\后面的字符。如 aa\dd\cc 变为aa\dd
//erase第一个参数为删除开始的位置,第二个参数为删除多少个字符

string的子字符串

str.substr(startpos, length);
其中 startpos 是起始字符的序号,length是[从startpos开始]取的字符串长度(包括startpos )

如果要取得 str 中序号 m 到 n 之间(不包括n)的子字符串需要用
str.substr(m, n-m);

string sub_string = v[i].substr(v[i].find_last_of('\\')+1, v[i].length()); //求字符串,的子串。如:aa\dd\cc变为:cc

string的resize

对于string对象进行操作删除多余的字符后(例如a+++b++c,变成a+b+c时,需要最后需要使用到resize),需要使用到s.resize(n)
例如:
反转单词顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值