c++primer plus第十六章-string类
来源:互联网 发布:淘宝怎么修改好评价 编辑:程序博客网 时间:2024/05/22 03:01
c++primer plus第十六章-string类
1)string类的9个构造函数
第一:string(const char *s)。将string对象初始化为s指向的NBTS(空格符结束的字符串)。
第二:string(size_type n, char c)。创建一个包含n个元素的string对象,其中每个元素都被初始化为字符c。
第三:string(const string & str)。将一个string对象初始化为string对象str(复制构造函数)。
第四:string()。创建一个默认的string对象,长度为0(默认构造函数)。
第五:string(const char *s, size_type n)。将string对象初始化为s指向的NBTS的前n个字符,即使超过了NBTS结尾。
第六:template<class Iter> string(Iter begin, Iter end)。将string对象初始化为区间【begin,end)内的字符,其中begin和end的行为就像指针,用于指定位置,范围包括begin在内,不包含end
第七:string(const string &str, string size_type pos =0, size_type n=npos)。将一个string对象初始化为对象str中从位置pos开始到结尾的字符,或从位置pos开始的n个字符
第八:string(string && str) noexcept。这是c++11新增的,它将一个string对象初始化为string对象str,并可能修改str(移动构造函数)。
第九:string(initializer_list<char>il)。这是C++11新增的内容,它将一个string对象初始化为初始化列表il中的字符。
2)getline():从输入中读取字符,并将其存储到目标string中,直到发生以下三种情况:
第一:到达文件尾部,这种情况下,输入流的eofbit将被设置,这意味着方法fail()和eof()都将返回true。
第二:遇到分界字符(默认为\n),这种情况下,将把分界字符从输入流中删除,但不存储它。
第三:读取的字符数达到最大允许值(string::npos和可供分配的内存字节数中较小的一个),在这种情况下,将设置输入流的failbit,这意味着方法fial()将返回true。
3)重载find()方法
第一:size_type find(const string &str, size_type pos=0) const
从字符串的pos位置开始,查找字符串str。如果找到,则返回该字符串首次出现时其首字符的索引;否则,返回string::npos。
第二:size_type find(const char *s, size_type pos=0) const
从字符串的pos位置开始,查找字符串s。如果找到,则返回该字符串首次出现时其首字符的索引;否则,返回string::npos。
第三:size_type find(const char *s, size_type pos=0, size_type n) const
从字符串的pos位置开始,查找字符串s的前n个字符组成的子字符串。如果找到,则返回该字符串首次出现时其首字符的索引;否则,返回string::npos。
第四:size_type find(char ch, size_type pos=0) const
从字符串的pos位置开始,查找字符ch。如果找到,则返回该字符串首次出现时其首字符的索引;否则,返回string::npos。
string库还提供了相关的方法:
rfind()方法查找子字符串或字符最后一次出现的位置;
find_first_of()方法在字符串中查找参数中任何一个字符首次出现的位置。
find_last_off()方法在字符串中查找参数最后一次出现的位置。
find_first_not_of()方法在字符串中查找第一个不包含在参数中的字符。
4)智能指针
这三个智能指针模板(auto_ptr、unique_ptr和shared_ptr)都定义了类似指针的对象,可以将new获得(直接或间接)的地址赋给这种对象。当智能指针过期时,其析构函数将使用delete来释放内存。因此,如果将new返回的地址赋给这些对象,将无需记住稍后释放这些内存:在智能指针过期时,这些内存将自动被释放。
要创建智能指针对象,必须包含头文件memory,该文件模板定义。然后使用通常的模板语法来实例化所需类型的指针。
5)#include<memory>
void remodel(std::string &str)
{
std::auto_ptr<std::string> ps(new std::string(str));
... ...
if(weird_thing())
throw exception();
str= *ps;
return ;
}
包含3个步骤:
第一:包含头文件memory;
第二:将指向string的指针替换为指向string的智能指针对象;
第三:删除delete语句。
- c++primer plus第十六章-string类
- Primer plus C++ 第十六章 string类_构造函数
- Primer plus C++ 第十六章 string类_输入
- c++primer plus第十六章-标准模板类
- 2012/2/7 《C++ Primer Plus》第十六章:string类和标准模板库 学习笔记
- 《C++ primer plus》第十六章:string类和标准模板库(一) 学习笔记
- 《C++ primer plus》第十六章:string类和标准模板库(二) 学习笔记
- 《C++ primer plus》第十六章:string类和标准模板库(三) 学习笔记
- C primer plus(第五版)编程练习第十六章
- C Primer Plus 第十六章 编程练习 1-7题
- C++Primer Plus(第六版) 第十六章 第一题
- C++Primer Plus(第六版) 第十六章 第八题
- 《C++ Primer Plus(第六版)》(34)(第十六章 string类和标准模板库 笔记)
- 《C++ Primer Plus(第六版)》(35)(第十六章 string类和标准模板库 复习题答案)
- C++primer第十六章string与STL(1)
- 【C++ Primer】第十六章 string类和标准模板库
- 《C++ Primer Plus(第六版)》(36)(第十六章 string类和标准模板库 编程练习和答案)
- 《C++ Primer Plus(第六版)》(37)(第十六章 string类和标准模板库 编程练习和答案2)
- 条款51:编写new和delete时需固守常规
- Oracle中rownum用法详解
- 最大公约数与最小公倍数
- 新申请的实验
- 鞍点
- c++primer plus第十六章-string类
- SDWebImage缓存机制
- MD5加密算法的使用
- solr5.3基本学习教程
- 编写程序需要注意的细节(转自高手的总结)
- constexpr和常量表达式
- HTTP协议
- Android Bitmap 与 Drawable之间的区别和转换
- [动态规划]整数拆分(纯DP)