期待char*类型字符

来源:互联网 发布:肯德基 麦当劳 知乎 编辑:程序博客网 时间:2024/06/05 05:32

一旦你创建的字符串,了解他们是如何长常常是很有用的。这是在长度和容量的操作来发挥作用。我们还将讨论各种方式std:string返回C风格字符串所以你可以功能,期待char*类型字符串中使用它们

一个字符串的长度

字符串的长度是相当简单的字符串中的字符数。有确定的字符串长度的两个相同的功能

size_type string::length() constsize_type string::size() constBoth of these functions return the current number of characters in the string, excluding the null terminator.Sample code:string sSource("012345678");cout << sSource.length() << endl;Output:9

bool string::empty() constReturns true if the string has no characters, false otherwise.Sample code:string sString1("Not Empty");cout << (sString1.empty() ? "true" : "false") << endl;string sString2; // emptycout << (sString2.empty() ? "true" : "false")  << endl;Output:falsetrue

注意能力大于字符串的长度!虽然我们的字符串的长度为8,字符串实际上分配足够的内存为15字!为什么要这样做

认识到这最重要的是,如果用户想把更多的字符到字符串的字符串具有比容量,字符串必须被重新分配到一个更大的能力。例如,如果一个字符串的长度和容量的8,然后添加任何字符的字符串将力重新分配。通过容量大于实际的字符串这给用户一些缓冲室扩大之前的字符串分配需要做的

事实证明再分配几个原因是坏的

首先,将一个字符串比较贵。首先,新的记忆已被分配。然后,字符串中的每个字符都被复制到新的记忆。这可以如果字符串是大花很长的时间。最后,旧的记忆已被释放。如果你做了大量的重新分配,这个过程可以减缓你的程序明显下降

第二,每当一个字符串的字符串的重新分配,改变到一个新的内存地址的内容。这意味着所有的参考文献指针和迭代器字符串无效

请注意,这并非总是如此,字符串将被分配容量大于长度。考虑下面的程序


0 0
原创粉丝点击