zoukankan      html  css  js  c++  java
  • c++字符串string的操作

      1 #include <iostream>
      2 #include <cstring>
      3 #include <string>
      4 
      5 using namespace std;
      6 
      7 int main()
      8 {
      9     //直接赋值
     10     string test;//定义了一个空字符串str
     11     test = "test_the_string";
     12 
     13     cout << "——————string字符串截取————————" << endl;
     14 
     15     //利用已有string初始化
     16     string s1(test); //复制字符串,s1=test,深拷贝
     17     cout << "s1 - " << s1 << endl;
     18 
     19     string s2(test, 6);//s2=test[6:]
     20     cout << "s2 - " << s2 << endl;
     21 
     22     string s3(test, 6, 3);//s3=test[6:(6+3)]
     23     cout << "s3 - " << s3 << endl;
     24 
     25     string s3_(test.begin()+6,test.begin()+9); //s3=test[6:(6+3)]
     26     cout << "s3_ - " << s3_ << endl;
     27 
     28     cout << "——————字符串数组截取————————" << endl;
     29 
     30     // C风格字符串转string初始化
     31     char testC[] = "test_the_string";  //定义了一个C字符串
     32 
     33     string s4(testC);  //s3=test
     34     cout << "s4 - " << s4 << endl;
     35 
     36     string s5(testC,6);  //s3=test[:7]
     37     cout << "s5 - " << s5 << endl;
     38 
     39     string s6(5,'A');  //生成一个字符串,包含5个'A'字符
     40     cout << "s6 - " << s6 << endl;
     41 
     42     cout << "——————字符串比较操作符————————" << endl;
     43     /* ==、>、<、>=、<=、和!=比较字符串(自左向右逐个按ASCII值大小相比较)
     44      * 可以用+或者+=操作符连接两个字符串,
     45      * 并可以用[]获取特定的字符 */
     46 
     47     bool temp = (s1 > "temper");//s>m
     48     cout << "s1 > s2 --- " << temp << endl;
     49 
     50     cout << "——————字符串比较操作符————————" << endl;
     51     /* string的一些特性
     52     int capacity()const;          //返回当前容量(即string中不必增加内存即可存放的元素个数)
     53     int max_size()const;          //返回string对象中可存放的最大字符串的长度
     54     int size()const;              //返回当前字符串的大小
     55     int length()const;            //返回当前字符串的长度
     56     bool empty()const;            //当前字符串是否为空
     57     void resize(int len,char c);  //把字符串当前大小置为len,多去少补,多出的字符c填充不足的部分*/
     58 
     59     cout << "s1是否为空:" << s1.empty() << endl;
     60     cout << "s1的长度为:" << s1.length() << endl;
     61     cout << "s1的当前容量(不新分配内存):" << s1.capacity() << endl;
     62     cout << "s1的最大容量(重新分配内存):" << s1.max_size() << endl;
     63     cout << "s1的长度:" << s1.size() << endl;
     64     s1.resize(20, '-');
     65     cout << "s1修改长度后,变成了:" << s1 << endl;
     66 
     67     cout << "——————字符串的查找————————" << endl;
     68     /* 查询结果类型为string::size_type,没有查询到,则返回string::npos;
     69      * 主要函数:find, rfind, find_first_of,find_last_of,s.find_first_not_of */
     70 
     71     cout << "->方法1,使用string::npos判断
    ";
     72     string::size_type loc;
     73     string s = "study hard and make progress everyday! every day!!";
     74     loc = s.find("make", 20);
     75 
     76     if(loc != string::npos){                  //搜不到为string::npos
     77         cout << "" << loc << "找到" << endl;
     78     }
     79     else{
     80         cout << "没有找到元素" << endl;
     81     };
     82 
     83     cout << "->方法2,string::npos可强制转换为-1
    ";
     84     int local;
     85     local = static_cast<int>(s.find("make", 20));
     86 
     87     if(local != -1){                  //显式转换为int,搜不到为-1
     88         cout << "在- " << local << " -找到元素" << endl;
     89     }
     90     else{
     91         cout << "没有找到元素" << endl;
     92     };
     93 
     94     cout << "——————字符串的常用函数————————" << endl;
     95 
     96     cout << s1.erase(2,2) << endl << endl;      //【删除】第2个位置的后2个字符,返回删除后的结果
     97     cout << s1.insert(2, "st") << endl;         //在第2个位置【插入】字符串“st”
     98     cout << s1.append("尾部新添加的") << endl;   //【append】末尾添加
     99     cout << s1.replace(5, 3, "修改值") << endl; //索引5开始的3个字符【替换】成"修改值"
    100     cout << s1.substr(1, 4) << endl;            //【截取】字符串,s1[1:4]
    101 
    102     return 0;
    103 }
  • 相关阅读:
    阿里巴巴excel工具easyexcel 助你快速简单避免OOM
    IoC和AOP的理解
    WebSocket和kafka实现数据实时推送到前端
    Swagger使用指南
    转载:对于马老师对996的看法
    基础:新建个maven项目
    eclipse集成lombok
    多线程
    jar包

  • 原文地址:https://www.cnblogs.com/geoffreyone/p/9812847.html
Copyright © 2011-2022 走看看