string类的用法

1、string 类的构造函数

  • string(const char *s) :将 string 对象初始化为 s 指向的字符串
    string str("Hello!");
    
  • string():创建一个默认的 string 对象,长度为 0(默认构造函数)
    string str;     // 创建一个空的 string 对象
    
    注意:string 类的设计允许程序自动处理 string 的大小,上述代码创建了一个长度为 0string对象,向 str 中写入数据时,程序会自动调整 str 的长度。
  • 用 C 语言风格初始化 string 对象:
    string str = "hello!";
    

2、获取 string 对象的长度

在 C++ 中,可以使用 string.size() 函数(为了兼容 STL 容器而引入)或 string.length() 函数(C 语言习惯保留)来获得 string 对象的长度。

3、string 对象的拼接和附加

  • 使用 + 操作符拼接两个字符串
    string str1("hello ");
    string str2("world!");
    string str3 = str1 + str2;
    
  • 使用 += 操作符拼接两个字符串
    可以使用 += 来在一个 string 对象后面附加一个 string 对象、字符以及 C 风格的字符串。
    string str1("hello ");
    string str2("world!\n");
     
    str1 += str2;
    str1 += "nice job\n";
    str1 += 'a';
    
  • 使用 string.append() 函数
    可以使用 string.append() 函数来在一个 string 对象后面附加一个 string 对象或 C 风格的字符串。
    string str1 = "hello,world!";
    string str2 = "HELLO,WORLD!";
        
    str1.append(str2);
    str1.append("C string");
    
  • 使用 string.push_back() 函数
    可以使用 string.push_back() 函数来在一个 string 对象后面附加一个字符。
    string str("Hello");
    str.push_back('a');
    

4、访问 string 字符串的元素

可以像 C 语言中一样,将 string 对象当做一个数组,然后使用数组下标的方式来访问字符串中的元素

string str("Hello,World!");
cout << str[1] << endl;  

5、获取子串

使用substr()函数,要求从指定位置开始,并具有指定的长度。【常用】

string str = "0123456789";
cout << str.substr(1,3) << endl; //从下标1开始,截取长度为3的子串,结果为:"123"
cout << str.substr(5) << endl; //从下标5开始,截取剩下的所有字符,结果为:"56789"

6、其他操作

  • 翻转字符串【常用】
    reverse函数用于反转在 [first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素);

    string str="abcd";
    reverse(str.begin(),str.end());//str结果为dcba
    
  • 重新定义字符串长度resize函数用于改变字符串长度。【常用】

    string s = "abcd";
    s.resize(s.size()*2);//将字符串长度扩充至原来的2倍
    //将字符串长度扩充至原来的2倍,扩充的部分使用字符'0'填充,字符串s为"abcd0000"
    s.resize(s.size()*2,'0');
    
  • 删除元素

    • erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
    • erase(position);删除position处的一个字符(position是个string类型的迭代器)
    • erase(first,last);删除从firstlast之间的字符(firstlast都是迭代器)
      string str ("This is an example phrase.");
      string::iterator it;
    
      // 第(1)种用法
      str.erase (10,8);
      cout << str << endl;        // "This is an phrase."
    
      // 第(2)种用法
      it=str.begin()+9;
      str.erase (it);
      cout << str << endl;        // "This is a phrase."
    
      // 第(3)种用法
      str.erase (str.begin()+5, str.end()-7);
      cout << str << endl;        // "This phrase."
    
  • C++ 字符串转换为数字

    • stoi()【常用】
      将字符串转换为整型。
    • stoll()
      将字符串转换为long long
    • stof()
      将字符串转换为float型
    • stod()
      将字符串转换为double型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elec Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值