《白话C++》第10章 Page51 10.3 字符串处理 大小(Size)与容量(Capacity) std::wstring(宽字符串)

本文介绍了C++中的std::string和std::wstring类,关注它们的成员函数如size(),length(),empty()等,以及内存管理方法如resize(),shrink_to_fit(),reserve()。特别强调了宽字符串处理和内存分配的区别。
摘要由CSDN通过智能技术生成

13.大小(Size)与容量(Capacity)

size_t size() const
//和
size_t length() const

这两个函数都返回字符串内部存储的字符个数不受  '\0'影响)。二者没有任何区别,后面仅以size()说明。

bool empty() const

返回是否是空字符串,size()或length()为零,但远比调用后二者再和0判断的操作来的高效。当软,如果当初命名为“is_empty()”就更完美了。

void resize(size_t n);
void resize(size_t n, char c);

重新设置字符串长度,如果新长度较大,则新出现的字符内容,要么为随机,要么为指定入参c字符的值。如果新长度较短,则超出的原有内容被抛弃。

注意,为了性能,std::string在正常的赋值过程中,尽管size()返回值会长长短短内部实际申请的内存尺寸,通常是只增不减

可以通过capacity()成员函数探测实际已经分配的内存数。

“hello world”,10个字符,再加一个空格字符,所以为11.

void shrink_to_fit();(仅C++ 11)
void reserve(size_t n = 0)

C++11提供了“shrink_to_fit()”成员函数,用于“祈求”一个std::string对象缩小内存std::string可以听话地缩小到size(),但也可能根本不理

C++98中就存在reserve函数,意思是“储备”,所以它更多地用于事先预分配内存(并不改变字符串的size()值),需要分配的元素个数使用n表示,如果n为0(默认值)并不是清空,事实上只要n比当前元素个数小,reserve就和shrink_to_fit()函数一个作用。

10.3.2  std::wstring

std::wstring用于处理宽字符串,宽字符类型为wchar_t。它有着和std::string类似的一整套的成员函数。

std::string和std::是同一个类模板产生的两个类,然后各自取的别名。这个类模板是:

std::basic_string <typename charT>

typedef std::basic_string <char> string;
typedef std::basic_string <wchar_t> wstring;

在屏幕输出方面,string对应cout / cin,wstring 则对应 wcout / wcin,只是后者在mingw环境下没有得到完整实现

在内存字符流方面,string 对应 stringstream / istringstream / ostringstream,

wstring 则对应  wstringstream / wistringstream / wostringstream

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值