C++ String深度探索:函数与操作

需积分: 10 10 下载量 129 浏览量 更新于2024-07-29 2 收藏 1.24MB DOC 举报
"深入学习C++_String" C++中的`std::string`是处理文本数据的重要工具,它提供了丰富的功能来创建、修改和操作字符串。本文深入探讨了`std::string`类的各种方面,包括其成员函数、构造、重载运算符以及与其他库的结合使用。 1. **C++ string简介** `std::string`是C++标准库中的一个类,它封装了动态大小的字符数组,支持各种字符串操作。这个类提供了比原始C风格的字符数组(char*)更安全和方便的接口。 2. **string的成员** - **append**: 追加一个字符串或字符到现有字符串的末尾。 - **assign**: 设置字符串的值为另一个字符串或一系列字符。 - **at**: 安全访问字符串中的指定位置的字符,会检查越界。 - **begin**和**end**: 返回迭代器指向字符串的首字符和超出末尾的位置。 - **c_str**: 获取以空字符结尾的C风格字符串指针。 - **capacity**: 查看当前字符串能容纳的最大字符数。 - **clear**: 清空字符串。 - **compare**: 比较两个字符串的大小。 - **copy**: 将字符串的一部分复制到字符数组中。 - **其他成员函数**包括查找、替换、删除、插入、调整容量、改变大小等,提供灵活的字符串操作。 3. **string的构造** 可以通过初始字符序列、长度、复制另一个字符串等方式构造`std::string`对象。 4. **string的重载运算符** `std::string`重载了常见的操作符,如+(拼接)、=(赋值)、==(比较)、[](索引访问)等,使得操作字符串更加直观。 5. **string与algorithm结合使用** `std::string`可以与STL算法库配合,例如`remove`用于移除字符串中特定元素,`unique`和`sort`对字符串进行排序和去重,`search`用于查找子串,以及`find`、`find_if`等搜索函数。 6. **string与wstring** `std::wstring`是宽字符字符串,通常用于处理多语言和Unicode编码。它可以与`std::string`进行转换,方便在不同字符集间操作。 7. **string与C++流** `std::string`与`iostream`库的结合使得读写文件和标准输入输出变得简单,`fstream`类可用于文件操作。 8. **格式化字符串** 介绍了C风格的格式化,如`printf`,以及使用Boost和stlsoft+fastformat等库进行更高级的格式化输出。 9. **string与CString** `CString`是Microsoft MFC库中的字符串类,虽然不是C++标准库的一部分,但在Windows开发中广泛使用。文章讨论了`std::string`与其之间的交互和转换。 这篇文章详尽地阐述了`std::string`的各个方面,对于深入理解和高效使用C++中的字符串处理非常有帮助。通过这些知识点,开发者可以更好地处理字符串操作,提升代码的可读性和效率。
2009-12-07 上传
目录 1 正文 4 一、 C++的string的使用 4 1.1 C++ string简介 4 1.2 string的成员 4 1.2.1 append 4 1.2.2 assign 5 1.2.3 at 5 1.2.4 begin 6 1.2.5 c_str 6 1.2.6 capacity 6 1.2.7 clear 7 1.2.8 compare 7 1.2.9 copy 7 1.2.10 _Copy_s 7 1.2.11 data 7 1.2.12 empty 7 1.2.13 end 7 1.2.14 erase 7 1.2.15 find 7 1.2.16 find_first_not_of 8 1.2.17 find_first_of 8 1.2.18 find_last_not_of 9 1.2.19 find_last_of 9 1.2.20 get_allocator 9 1.2.21 insert 9 1.2.22 length 9 1.2.23 max_size 9 1.2.24 push_back 9 1.2.25 rbegin 9 1.2.26 rend 9 1.2.27 replace 9 1.2.28 reserve 11 1.2.29 resize 12 1.2.30 rfind 12 1.2.31 size 12 1.2.32 substr 12 1.2.33 swap 12 1.3 string的构造 12 1.4 string的重载运算符 12 1.5 string与algorithm相结合的使用 13 1.5.1 string与remove 13 1.5.2 string与unique、sort 13 1.5.3 string与search 13 1.5.4 string和find、find_if 14 1.5.5 string与copy、copy_if 14 1.5.6 string与count、count_if 15 1.6 string与wstring 15 1.6.1 简介 15 1.6.2 wstring实例 15 1.6.3 wstring与控制台 16 1.6.4 string与wstring的相互转换 17 1.7 string与C++流 22 1.7.1 C++流简介 22 1.7.2 string与iostream、fstream 22 1.8 格式化字符串 23 1.8.1 简单常用的C方法 23 1.8.2 boost的方法 23 1.8.3 stlsoft + fastformat 23 1.9 string与CString 24 二、 boost字符串算法库 24 2.1 boost字符串算法库导论 24 2.1.1 boost.algorithm.string是什么? 24 2.1.2 相关 24 2.1.3 boost.range导论 24 2.1.4 boost.regex导论 24 2.1.5 boost.algorithm.string的DNA 24 2.2 boost字符串算法解密 24 2.2.1 修剪(trim.hpp) 24 2.2.2 转换(case_conv.hpp) 24 2.2.3 判断式、断言函数(predicate.hpp)【Predicates】 24 2.2.4 查找 24 2.2.5 删除和替换 24 2.2.6 分割和组合 24 2.2.7 分词 24 2.2.8 其它 24 三、 C字符串 24 3.1 C字符串常用算法 24 3.1.1 strcpy wcscpy 24 3.1.2 strcat wcscat 24 3.1.3 strchr wcschr 24 3.1.4 strcmp wcscmp 24 3.1.5 stricmp wcsicmp 24 3.1.6 strlen wcslen 24 3.1.7 strlwr/_strlwr wcslwr/_wcslwr 24 3.1.8 strncat wcsncat 24 3.1.9 strcspn wcscspn 24 3.1.10 strdup/_strdup wcsdup/_wcsdup 24 3.1.11 strncpy wcsncpy 24 3.1.12 strpbrk wcspbrk 24 3.1.13 strrev/_strrev wcsrev/_wcsrev 24 3.1.14 strset/_strset/_strset_l wcsset/_wcsset/_wcsset_l 24 3.1.15 strstr/wcsstr 24 3.1.16 strtok/wcstok 24 3.1.17 strupr/_strupr wcsupr/_wcsupr 24 3.2 更安全的C字符串函数 24 3.2.1 简述 24 3.2.2 简单实例 24 3.2.3 定制 24 3.2.4 兼容 24 3.3 通用字串函数 24 3.3.1 简述 24 3.3.2 简单实例 24 3.3.3 映射表 24 3.4 API级的字符串处理 24 3.4.1 简述 24 3.4.2 旧的API 24 3.4.3 Shell字符串函数 24 3.4.4 新的安全版字符串处理API 24 四、 c++字符串分词 24 4.1 简介 24 4.2 C库 24 4.3 C++ stringstream 24 4.4 boost字符串算法库的分词技术 24 4.4.1 泛型算法 24 4.4.2 迭代器 24 4.5 boost.tokenizer 24 4.5.1 组件 24 4.5.2 工具类解析 24 4.5.3 boost.tokenizer的缺陷 24 4.6 stlsoft::string_tokeniser 24 4.7 效率大PK 24 五、 C++字符串使用的建议 24 附录1:参考资料: 24 附录2: MSSTL中basic_string的部分源码解读 24 2.1 string的allocator 24 2.1.1 Allocate和Deallocate 24 2.1.2 allocator的泛型实现 24 2.1.3 string与char_traits 24 2.1.4 以char和wchar_t特化char_traits 24 附录3 TCHAR.h 映射表 24 日志: 24 1.0 版 24 1.1 版 24 1.2 版 24 2.0 版 24 2.1 版 24