首页 > 解决方案 > string::capacity/reserve() 是否计算终止为空?

问题描述

从 cppref 的描述中看不到capacity()终止reserve()空字符是否被计算在内。

标签: c++stdstringc++-standard-library

解决方案


该标准规定

在所有情况下,size() <= capacity()

并且size()不包括终止空值。

由于有可能size()equals capacity(),在这种情况下,这意味着它capacity()也不计算终止的空值。

请注意,在 C++11 及更高版本中,mystring.c_str()等价于mystring.data()等价于&mystring[0],并mystring[mystring.size()]保证为'\0'

检查这个演示


推荐阅读