C++ Primer 笔记 第 13 章 拷贝控制

 

6.1 函数基础

局部静态对象在第一次经过时初始化。

6.2.5 可变形参 C++11

initializer_list<T>

传递的时候用 {}
initializer_list 中的元素是常量

3.2 标准库类型 string

#include <string>
using std::string

3.2.1 定义和初始化 string 对象

string s1; // empty
string s2(s1); // 副本;直接初始化
string s2 = s1;  //和上面一样;拷贝初始化
string s3("value");  //
string s3 = "value";  //和上面一样
string s4(n, 'c');  //n 个 c;直接初始化

使用等号就是拷贝初始化

3.2.2 string 对象上的操作

os << s  // 将 s 写到输出流 os 当中,返回os
is >> s  // 从 is 中读取字符串赋给 s,字符串以空白分隔,返回 is
getline(is, s)  //
s.empty()
s.size()
s[n]
s1+s2
s1=s2
s1==s2
s1!=s2
<, <=, >, >=  // 字典序比较,大小写敏感

读写 string 对象

cin >> s;  //从非空读到空格

读取未知数量

string word;
while(cin>>word){
    ...
}

使用 getline 读取一整行,换行符会丢掉

string line;
while(getline(cin, line)){
    ...
}

size() 函数返回的实际上是 size_type 类型,无符号类型,所有用于存放 string 类 size 函数返回值的变量,都应该是 string::size_type 类型。小心类型混用。

比较 string 对象

前面一样,短的小。某些位置不一样的话,比较第一对相异字符

两个 string 对象相加

+
+=

字面值和 string 对象相加

+ 两侧至少有一个是 string 对象。先算左边。

处理 string 对象中的字符

isalnum(c)  // 字母或数字时为真
isalpha  // 字母
iscntrl  //控制字符
isdigit  // 数字
isgraph  // 不是空格但可打印
islower  // 小写字母
isprint  // 可打印,可以是空格
ispunct  // 标点符号,不是控制字符、字母、数字、可打印空白
isspace  // 空格、横向制表符、纵向制表符、回车、换行符、进纸符
isupper  // 大写字母
isxdigit  // 十六进制数字
tolower  // 输出小写字母
toupper  // 输出大写字母