字符串处理之string

    xiaoxiao2021-03-25  178

    字符串处理之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的查找问题

    vector v 中存放很多string的数组,在v中查找某个数组。 find(v.begin(), v.end(), s) //查找s,返回iterator指针,当表示没有找到时:返回v.end() 在string中查找某个特定字符。 s.find('a') //在字符串s中查找a字符,返回该字符的位置下标 //当表示没找到时: s.find('a')==string::npos //从特定位置开始,查找第一个要找的字符串: a = "hah" int pos = s.find(a, startPos); //从string中下标startPos位置中开始查找a字符串 在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) 例如: 反转单词顺序

    转载请注明原文地址: https://ju.6miu.com/read-5941.html

    最新回复(0)