-cpp string类和标准模板库
Posted itzyjr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-cpp string类和标准模板库相关的知识,希望对你有一定的参考价值。
本章内容包括:
- 标准C++string类
- 模板auto_ptr、unique_ptr和shared_ptr
- 标准模板库(STL)
- 容器类
- 迭代器
- 函数对象(functor)
- STL算法
- 模板initializer_list
一、string类
构造字符串
使用构造函数时都进行了简化,即隐藏了这样一个事实:string实际上是模板具体化basic_string<char>的一个typedef,同时省略了与内存管理相关的参数(这将在本章后面和附录F中讨论)。size_t是一个依赖于实现的整型,是在头文件string中定义的。string类将静态成员常量string::npos定义为字符串的最大长度。
关于npos
static const size_t npos = -1;
npos是一个静态成员常量值,是size_t类型的元素的最大可能值。
当该值用作字符串成员函数中参数的值时,表示“直到字符串结束”。
作为返回值,它通常用于指示不匹配。
该常量的定义值为-1,因为size_t是无符号整数类型,所以它是该类型的最大可能表示值。
// str1.cpp -- introducing the string class
#include <iostream>
#include <string>
// using string constructors
int main()
using namespace std;
string one("Lottery Winner!"); // ctor #1 (注:ctor是constructor的缩写)
cout << one << endl; // overloaded <<
string two(20, '$'); // ctor #2
cout << two << endl;
string three(one); // ctor #3
cout << three << endl;
one += " Oops!"; // overloaded +=
cout << one << endl;
two = "Sorry! That was ";
three[0] = 'P'; // overloaded []
string four; // ctor #4
four = two + three; // overloaded +, =
cout << four << endl;
char alls[] = "All's well that ends well";
string five(alls, 20); // ctor #5
cout << five << "!\\n";
string six(alls+6, alls + 10); // ctor #6
cout << six << ", ";
string seven(&five[6], &five[10]); // ctor #6 again
cout << seven << "...\\n";
string eight(four, 7, 16); // ctor #7
cout << eight << " in motion!" << endl;
// std::cin.get();
return 0;
Lottery Winner!
$$$$$$$$$$$$$$$$$$$$
Lottery Winner!
Lottery Winner! Oops!
Sorry! That was Pottery Winner!
All's well that ends!
well, well...
That was Pottery in motion!
C++11新增的构造函数
构造函数string(string&& str)类似于复制构造函数,导致新创建的string为str的副本。但与复制构造函数不同的是,它不保证将str视为const。这种构造函数被称为移动构造函数(move constructor)。在有些情况下,编译器可使用它而不是复制构造函数,以优化性能。第18章的“移动语义和右值引用”一节将讨论这个主题。
构造函数string(initializer_list<char> il)让您能够将列表初始化语法用于string类。也就是说,它使得下面这样的声明是合法的:
string piano_man = 'L', 'i', 's', 'z', 't';
string comp_lang 'L', 'i', 's', 'p';
string类输入
未完待续。。。。。。
以上是关于-cpp string类和标准模板库的主要内容,如果未能解决你的问题,请参考以下文章