期待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
- 期待char*类型字符
- 使用字符:char类型
- 使用字符:char类型
- char和unsigned char字符类型
- char类型及字符常量
- char类型与字符编码
- C# char类型字符转换大小写
- 字符类型转换 CString char string
- C++字符类型TCHAR、char和wchar_t
- JAVA笔记-字符类型(char)--特殊
- Java中char 字符类型的独特性
- 10.java语言基础-字符类型(char)
- Unity char字符类型的判断
- SQL 字符类型char varchar nvarchar介绍
- 1.2char字符类型相关说明
- C++字符类型TCHAR、char和wchar_t
- LPCTSTR char 类型, wchar_t 类型,字符数组区别
- Objective-C数量类型-Objective-C char 字符类型
- 冒泡 选择排序 的java实现
- 事件onInterceptTouchEvent和onTouchEvent
- Win32汇编之使用资源--菜单和加速键
- double 的精度和,有效位数和表示范围
- 在lua中使用C语言编写的库
- 期待char*类型字符
- lua - Mac OS X环境编译C模块
- 从Samples中入门IOS开发(一)------ XCode上手
- remove the duplicate node from unsorted list
- UVA - 10098 Generating Fast (全排列)
- 请求被忽略
- (转)stm32F4-----DMA的FIFO作用和用法
- ore性质及其证明应用
- 请求被忽略