C++基础---string类的capacity/max_size/size/length/empty/reserve/resize

1. string类的capacity/max_size/size/length/empty/reserve/resize

1.1 std::string::capacity

  • 原型: size_t capacity() const;
  • 说明: 返回string分配的存储容量。

1.2 std::string::max_size

  • 原型: size_t max_size() const;
  • 说明: 返回string对象中可存放的最大字符串的长度。

1.3 std::string::size

  • 原型: size_t size() const;
  • 说明: 返回源字符串的长度大小。
  • 注意:size()与length()方法的功能一样,都是计算能够输出的可见字符的长度 ,length()是早期的版本,size()是后来添加的为了兼容STL。

1.4 std::string::length

  • 原型: size_t length() const;
  • 说明: 返回源字符串的长度大小。
  • 注意:size()与length()方法的功能一样,都是计算能够输出的可见字符的长度 ,length()是早期的版本,size()是后来添加的为了兼容STL。
  • 代码示例:capacity/max_size/size/length

    
    #include <iostream>
    
    
    #include <string>
    
    using namespace std;
    int main ()
    {
        string str ("Test string");
        cout<<"capacity: "<<str.capacity()<<endl;
        cout<<"max_size: "<<str.max_size()<<endl;
        cout<<"size: "<<str.size()<<endl;
        cout<<"length: "<<str.length()<<endl;
        system("pause");
        return 0;
    }
    =>capacity: 15
      max_size: 4294967294
      size: 11
      length: 11

1.5 std::string::empty

  • 原型: bool empty() const;
  • 说明: 判断源字符串是否为空。
  • 代码示例:empty

    
    #include <iostream>
    
    
    #include <string>
    
    using namespace std;
    int main ()
    {
        string content;
        string line;
        cout<<"Please introduce a text. Enter an empty line to finish:"<<endl;
        do 
        {
            getline(std::cin, line);
            content += line + '\n';
    
        }while (!line.empty());
        cout <<"The text you introduced was:\n"<<content;
        system("pause");
        return 0;
    }
    =>Please introduce a text. Enter an empty line to finish:
    
      The text you introduced was:

1.7 std::string::reserve

  • 原型: void reserve (size_t n = 0);
  • 说明: 重新给源字符串分配存储最小为n的容量。
  • 注意:指定容器能存储数据的个数,将字符串的容量设置为至少n,string增加容量时,每次增加16的倍数。
  • 代码示例:reserve/capacity/max_size/size/length

    
    #include <iostream>
    
    
    #include <string>
    
    using namespace std;
    int main ()
    {
        string str ("Test string");
    
        cout<<"调用str.reserve(size_t n=0);之前:"<<endl;
        cout<<"capacity: "<<str.capacity()<<endl;
        cout<<"max_size: "<<str.max_size()<<endl;
        cout<<"size: "<<str.size()<<endl;
        cout<<"length: "<<str.length()<<endl;
        cout<<endl;
    
        str.reserve(50);//string增加容量时,每次增加16的倍数,
        cout<<"str.reserve(50);之后:str.capacity()=16*4-1"<<endl;
        cout<<"capacity: "<<str.capacity()<<endl;//16*4-1
        cout<<"max_size: "<<str.max_size()<<endl;
        cout<<"size: "<<str.size()<<endl;
        cout<<"length: "<<str.length()<<endl;
        cout<<endl;
    
        str.reserve(100);//string增加容量时,每次增加16的倍数
        cout<<"str.reserve(100);之后:str.capacity()=16*7-1"<<endl;
        cout<<"capacity: "<<str.capacity()<<endl;
        cout<<"max_size: "<<str.max_size()<<endl;//16*7-1
        cout<<"size: "<<str.size()<<endl;
        cout<<"length: "<<str.length()<<endl;
        cout<<endl;
    
        system("pause");
        return 0;
    }
    =>调用str.reserve(size_t n=0);之前:
      capacity: 15
      max_size: 4294967294
      size: 11
      length: 11
    
      str.reserve(50);之后:str.capacity()=16*4-1
      capacity: 63
      max_size: 4294967294
      size: 11
      length: 11
    
      str.reserve(100);之后:str.capacity()=16*7-1
      capacity: 111
      max_size: 4294967294
      size: 11
      length: 11

1.7 std::string::resize

  • 原型: void resize (size_t n);
  • 说明: 调整源字符串的长度为n。
  • 原型: void resize (size_t n, char c);
  • 说明: 调整字符串长度为n,并用字符c填充不足的部分 。
  • 代码示例:

    
    #include <iostream>
    
    
    #include <string>
    
    using namespace std;
    int main ()
    {
        string str ("I like to code in C");
        cout<<str<<endl;
    
        unsigned sz = str.size();
    
        str.resize(sz+2,'+');
        cout<<str<<endl;
    
        str.resize(14);
        cout<<str<<endl;
    
        system("pause");
        return 0;
    }
    =>I like to code in C
      I like to code in C++
      I like to code

参考文献:
[1] 网络资源: http://www.cplusplus.com/reference/string/string/capacity/
       http://www.cplusplus.com/reference/string/string/max_size/
       http://www.cplusplus.com/reference/string/string/size/
       http://www.cplusplus.com/reference/string/string/length/
       http://www.cplusplus.com/reference/string/string/empty/
       http://www.cplusplus.com/reference/string/string/reserve/
       http://www.cplusplus.com/reference/string/string/resize/

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值