ppt文档 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 页请下载阅读 -
文档评分
请文明评论,理性发言.