【C++】《C++标准程序库》小结第十一章-String
来源:互联网 发布:nas网络存储 编辑:程序博客网 时间:2024/04/29 18:30
1、追求性能,底层编程的时候,用char。追求方便安全,应用编程的时候,用string。
2、string相当于char的类封装。尽量使用string的成员函数,不要使用外部STL算法函数。
3、string::npos相当于string的末尾标记,类似于char的’\0’,类似于STL的coll.end()。注意返回值最好是string::size_type,绝对不可以用unsigned int,因为npos=-1。int也最好不要用了。
4、下面的写法正确,但是效率不高:
string c = a + b;
原因是会产生临时数据。高效率的写法是:
string c = a;
c += b;
5、如果要获得整句包含空格的字符串,建议用getline而不是cin,cin会跳过空格。要用cin,这样干:cin >> std::skipws>> string;
getline(std::cin, string);
getline(std::cin, string , ‘:’);//遇到‘:’号就停止。注意是单字符!!
6、与众不同的函数
函数名
作用
replace
替换字符。与STL的replace不同,这里是给定区间替换
c_str
返回一个const char*的字符串,如果想进行操作,就请复制出来。推荐用strcpy
data
类似于c_str(),但是末尾不会自动添加’\0’
substr
返回子字符串
find
搜寻第一个指定字符
rfind
搜寻最后一个指定字符
find_first_of
第一个与给定的多个字符中任何一个相同的字符。这个很有用。比如搜寻一些终结符号:
string delim(“ \t\0:”);
s.find_first_of(ctr, delim);遇到delim中任何一个符号就返回
find_last_of
最后一个与给定的多个字符中任何一个相同的字符
find_first_not_of
第一个与给定的多个字符中任何一个都不同的字符
find_last_not_of
最后一个与给定的多个字符中任何一个都不同的字符
7、string没有提供正则表达式和文本处理。文本处理可以使用string算法自己编写程序。正则表达式C++tr1/C++11标准已经支持,需要包含#include<regex>
8、string对待’\0’与Char不同,这点要注意。
a) string(“nico”) “nico”
b) string(“nico”, 5) “nico\0”
c) string(5, ‘\0’) “\0\0\0\0\0”
9、string可以看做vector<char>或者vector<wchar>。这样很多STL算法可以用。string的迭代器是random-access随机迭代器。有些STL实作在实现string时使用了引用计数技术使得相关操作很快。
11、有关非英文编码,请看后面的国际化一章。
- 【C++】《C++标准程序库》小结第十一章-String
- 【C++】《C++标准程序库》小结第六章(容器)
- 【C++】《C++标准程序库》小结七章-迭代器
- 【C++】《C++标准程序库》小结八章-仿函数
- 【C++】《C++标准程序库》小结第九章-算法
- 【C++】《C++标准程序库》小结第十章-特殊容器
- 【C++】《C++标准程序库》小结第十二章-数值
- 【C++】《C++标准程序库》小结第十三章-stream(1)
- 【C++】《C++标准程序库》小结第十三章-stream(2)
- 【C++】《C++标准程序库》小结第十三章-stream(3)
- 【C++】《C++标准程序库》小结第十五章-自定义空间配置器
- C标准程序库头文件
- c primer plus 第十一章学习小结
- C++:标准程序库-STL迭代器Iterator
- c++primer第十一章关联容器小结-11
- 《The+C+++Programming+Language》第十一章String部分实现
- 标准c++string
- C/C++/C# 程序库
- android基于监听的事件处理(内部类作为事件监听器)
- SQL 模糊查询条件的四种匹配模式
- SSH整合教程
- 第二周项目:求值
- 【HDU】 1011 Starship Troopers
- 【C++】《C++标准程序库》小结第十一章-String
- mysql insert操作
- Ubuntu Apache 不同端口监听不同站点
- 【BZOJ1056】[HAOI2008]排名系统【Splay】【Hash】
- 如何给github上项目贡献代码
- Junit单元测试使用log4j输出日志
- 第五周上机实践项目1(2):三角形类雏形
- MySQL的触发器
- Web Api安全性设计