C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串
40.20 MB
162 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pptx | 3 |
摘要 | ||
文档系统阐述了C++中字符和字符串的使用与优化,包括字符串类的实现、C式字符串与C++字符串的转换方法、c_str()与data()函数的区别,以及字符串连接运算符的使用规则。文档还介绍了C++中字符类型的多样性,如char、wchar_t等,并探讨了字符串类的内存管理和小字符串优化技术。最后,文档提到了C++14引入的自定义字面量后缀特性,以简化字符串操作。 | ||
AI总结 | ||
本文主要介绍了C++中字符与字符串的相关知识,重点包括以下内容:
1. **`c_str()`与`data()`的区别**:
- `s.c_str()`返回以`\0`结尾的字符串首地址指针,总长度为`s.size() + 1`。
- `s.data()`返回连续内存的首地址指针,不保证`\0`结尾。
- 在传递给C语言函数(如`printf`)时,应使用`s.c_str()`。
2. **字符串传递与性能**:
- 传递`string`或`const string&`时,无需额外操作。
- 传递`string const&`或`string_view`时,更高效。
3. **字符与字符串类型**:
- `char`型字符串默认编码随系统而变。
- `wchar_t`、`char16_t`、`char32_t`等类型编码固定,不依赖系统。
- C++11及后续版本引入了`u8string`、`u16string`、`u32string`等类型,分别对应UTF-8、UTF-16、UTF-32编码。
4. **字符串连接**:
- C++重载了`+`运算符,支持`string`类的连接操作。
- 示例:
- 错误用法:`"hello" + "world"`
- 正确用法:`string("hello") + "world"`、`"hello" + string("world")`、`string("hello") + string("world")`(推荐)。
5. **自定义字面量后缀(C++14新增特性)**:
- 通过在字符串后添加特定后缀(如`_s`),可以直接创建`string`对象,例如`"hello"_s`等同于`string("hello")`。
6. **`starts_with`和`ends_with`功能(C++20新增)**:
- `starts_with`用于检查字符串是否以特定子串开头。
- `ends_with`用于检查字符串是否以特定子串结尾。
- 可检查子串或单个字符。
7. **字符串类实现细节**:
- `string`类内部实现采用 `[ptr, len, capacity]` 模型。
- 小字符串优化:小字符串(<=15字符)存储在栈上,避免堆分配,节省性能开销。
- 大字符串则会在堆上分配空间。
8. **注意事项**:
- `const char*`可以隐式转换为`string`,反之则需显式调用`c_str()`。
- 高效传递字符串时,建议使用`string const&`或`string_view`。
通过以上内容,帮助开发者更好地理解和使用C++中的字符串操作,提升代码的安全性和效率。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
155 页请下载阅读 -
文档评分