zoukankan      html  css  js  c++  java
  • 字符与字符串操作归纳[持续更新]

    最近刷了一些题,很多喜欢考字符串转换之类的,自己平时容易忘记,做题时也去翻了很多次,故归纳下来,加深印象。

    • 字符操作

        我们经常要处理string对象中的字符,比如检查一个string是否包含空白,大小写转换,首字母大写,归纳一些字符处理的操作。

        再cctype的头文件中定义了一组标准库函数处理这部分工作。主要是简化代码,改善易读性。

          isalnum(c)      当c是字母或数字时为真

          isalpha(c)       当c是字母时为真

          isdigit(c)         当c是是数字时为真

          islower(c)       当c是小写字母时为真

          issupper(c)       当c是大写字母时为真

          isspace(c)      当c是空格时为真

          ispunct(c)       当c是标点符号时为真(c不是数字,字母,控制字符,可打印空白中的一种)

          isgraph(c)       当c是不是空格但可打印的字符时为真

          isprint(c)       当c是可打印字符时为真(即c是空格或c具有可视形式)

          isxdigit(c)         当c是16进制时为真

          tolower(c)        当c是大写字母,输出对应的小写字母,否则原样输出c 

          toupper(c)       当c是小写字母,输出对应的大写字母,否则原样输出c

    •  string对象

        初始化方式

    string s1
    string s2(s1)
    string s2 = s1
    string s3("value")         //直接初始化
    string s3 = "value"       //拷贝
    string s4(n, 'c')            //初始化为n个c    
    //n,len2和pos都是无符号值
    string s(cp, n)            //s是cp指向数组中前n个字符的拷贝。此数组至少包含n个字符
    
    string s(s2, pos2)
     //s是string s2从pos位置开始的字符的拷贝,若pos2>s2.size(),构造函数的行为未定
    
    string s(s2, pos2, len2)  //pos2开始n个字符的拷贝

        介绍string对象的操作之前,先介绍下标准IO库对string的特别支持。

        string流

        sstream头文件定义了三个类型来支持内存IO。 关系如下

        stringstream继承包括istringstream和ostringstream,  sstream继承包括iostream和stringstream

        例如从控制台读入一行 int数据 (1 2 3 4 5 6):

    #include<iostream>
    #include<sstream>
    #include<string>
    using namespace std;
    
    vector<int> readNumLine()
    {
        string strLine;
        vector<int> vctNums = {};
        if(getline(cin, strLine))
        {
            vctNums = {};
            int nNum;
            istringstream iss(strLine);
            while(iss>>nNum)
                vctNums.push_back(nNum);
        }
    }

        ostringstream与 cout 类似。

    • string对象的操作

        首先是重载的运算符 << 、>>、 []、=、==、!=、+、<、<=、>、>=。

    getline(is, s)        //从is中读入一行赋给s 返回is
    s.empty()
    s.size()

         string子字符串操作

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

         string compare函数

          s.compare的几种参数形式

            s2            比较s和s2

            pos1,n1,s2        将s中从pos1开始的n1个字符与s2比较

            pos1,n1,s2,pos2,n2    将s中从pos1开始的n1个字符与s2中从pos2开始的n2个字符比较

            cp            比较s与cp指向的一空字符结尾的字符数组

            pos1,n1,cp

            pos1,n1,cp,n2

        string搜索操作  

          搜索操作返回指定字符出现的下标,如果未找到则返回npos

            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中的字符

          args必须是一下形式之一

            c,pos            从s中位置pos开始查找字符c。pos默认为0

            s2,pos          从s中位置pos开始查找字符串s2。pos默认为0

            cp,pos          从s中位置pos开始查找指针cp指向的以空字符结尾的C风格字符串。pos默认为0

            cp,pos,n         从s中位置pos开始查找指针cp指向的以空字符结尾的C风格字符串的前n个字符。pos默认为0

        

        修改string的操作


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

            s.erase(pos,len)       删除从位置pos开始的len个字符。如果len省略,则删除pos开始到结尾的所有字符。返回一个指向s的引用

            s.assign(args)        将s中的字符串替换为指定的字符.返回一个s的引用

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

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


         args必须是一下形式之一;append和assign可以使用所有形式。str不能与s相同,迭代器b和e不能指向s。

            str            字符串

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

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

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

            n,c              n个字符c     

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

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

     未完待续。。。

           

           

  • 相关阅读:
    清除浮动的原理剖析
    修正IE6不支持position:fixed的bug(转)
    Callbacks vs Events
    垂直属性
    jQuery的事件模型
    Dean-Edward的事件系统实现
    简单的导航栏实现
    弹窗层效果的实现(非jQuery实现)
    rmdir
    mkdir
  • 原文地址:https://www.cnblogs.com/hao11/p/12189358.html
Copyright © 2011-2022 走看看