关于这个标准是非承诺的。甚至没有提到空字符 的文件 basic_string 。
basic_string
在许多成员函数的文档中,提到:
capacity()一个至少与size()一样大的值
但是,没有任何说法 capacity() 必须大于 size() 能够容纳空字符。
capacity()
size()
这是一个示例程序,但都没有显示 resize() 也不 capacity() 了解有关终止空字符的任何信息。
resize()
#include <iostream> #include <string> int main() { std::string s1(10, 'a'); std::cout << "size: " << s1.size() << std::endl; std::cout << "capacity: " << s1.capacity() << std::endl; std::string s2; s2.resize(5); s2[0] = 'a'; s2[1] = 'b'; s2[2] = 'c'; s2[3] = 'd'; s2[4] = 'e'; std::cout << "size: " << s2.size() << std::endl; std::cout << "capacity: " << s2.capacity() << std::endl; std::string s3("abcd"); std::cout << "size: " << s3.size() << std::endl; std::cout << "capacity: " << s3.capacity() << std::endl; }
输出用 g++ --std=c++14 在我的笔记本上:
g++ --std=c++14
size: 10 capacity: 10 size: 5 capacity: 5 size: 4 capacity: 4