• string


    先引入头文件

    #include <string>

    首先定义一个string字符串

    std::string str;

    下文中使用 using namespace std 命名空间

    在定义字符串的同时,可以初始化他,赋给他一个值

    string str("cat dog big");

    这个效果就等同于c语言中的

     char *str = "cat dog big";

    也可以这样初始化,让他全部都是固定的字符

    string str(10,'a');

    这样 字符串str 里面就有 aaaaaaaaaa 这个数据了

    那假设我现在想将刚才定义的字符串中的一段数据作为我新字符串的内容

    string str2(str,4,3);

    将他写入程序中试一试

    int main(int argc,char *argv[])
    {
    
        string str("cat dog big");
        string str2(str,4,3);
        cout<<str2<<endl;
        return 0;
    }

    输出结果为

    dog

    也就是将 str 中 第4个字符 (d) 开始 提取出3个字符 作为新字符串str2的值


    赋值

    str = "good good study";

    也可以使用函数 assign() 赋值

    str.assign("day day up");      //将str中数据重置为day day up
    str.assign(10,'a');                 //将str中数据重置为aaaaaaaaaa
    str.assign("day day up",4,3);    //从第4位开始 取第一个参数中的3个字符 作为新str 的内容 最终为day 

    字符串长度

    str.length();
    str.size();

    这两个成员函数的返回值即为长度


    将两个字符串连接起来

    string str1("good");
    string str2("upup");
    string str3 = str1 + str2;

    str3 的值为 goodupup

    也可以这样

    string str1("good");
    string str2("upup");
    str1.append(str2);

    将str2 接在 str1的后面

    str1.append(str2,2,2);        //在str1后面接 从str2的第2个字符开始 连续2个字符
    str1.append(2,'a');           //在str1后面接aa

    字符串的比较

    可以用<、<=、==、!=、>=、> 等运算符比较字符串的大小

    也可以使用conpare

        int n = str1.compare(str2);

    str1 比 str2 小 -1

    str1 比 str2 大  1

    相等返回0


    得到子串

    string str("abcd");
    string str2 = str.substr(2);       //cd  从第2个开始取 取到结束
    string str3 = str.substr(1,2);     //bc  从第1个开始取 取2个

    交换字符串内容

    str.swap(str1);

    把 str 的内容给 str1  把 str1 的内容给 str


    查找字符串/字符

    str.find('o');

    返回字符串 str 中, 第一次出现o的位置  

    字符串也是一样的用法,将要查找的内容换为  "od"

    str.find('o',3);

    在第4个元素之后查找o 返回o的位置

    str.find_first_of("god");

    查询第一次出现 g 或 o 或 d 的位置 

    str.find_last_of(‘o’);

    查询最后一次出现o的位置

    str.find_first_not_of("god");

    查询第一次出现非 g 非 o 非 d 的字母的位置

    看一个例子

    int main(int argc,char *argv[])
    {
        int n;
        string str("good good study");
        if ((n = str.find('o')) != string::npos)
        {
            cout<<"第一次出现o是在第" <<n<<""<<endl;
        }
        return 0;
    }

    返回结果n为1

    注意这里在判断的时候 要用 string::npos 这个值是 string::size_type 类型的 -1


    删除子串

    str.erase(2);            //删除第3个字符
    str.erase(1,3);         //从第2个开始删除3个字符

    插入字符串

    str.insert(2,"aaa");

    在第3个字符处 插入 aaa

    也可以这样

    str.insert(2,3,‘a’);

    替换字符串

    str.replace(1,2,"run");

    从第2个字符开始删除2个 并插入"run"

  • 相关阅读:
    虚拟主机导入MySQL出现Unknown character set: ‘utf8mb4’
    解决导入MySQL数据库提示"Unknown character set: 'utf8mb4'"错误
    织梦dedecms如何去除版权中的Power by DedeCms
    发送邮件常见出错代码及简单解决方法
    Hadoop集群配置(最全面总结)
    大数据下的数据分析平台架构
    跟上节奏 大数据时代十大必备IT技能
    Hive深入浅出
    深入解析:分布式系统的事务处理经典问题及模型(转载分享)
    数据分析≠Hadoop+NoSQL
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12599761.html
Copyright © 2020-2023  润新知