《C++ primer》5th读书笔记(chapter3)
来源:互联网 发布:淘宝日本代购店铺 推荐 编辑:程序博客网 时间:2024/05/14 10:17
chapter 3 字符串、向量和数组
内置类型由C++直接定义,体现了大多数计算机硬件本身具备的能力。而标准库定义了一些更高级性质的类型,它们尚未直接实现到计算机硬件中。
3.1 命名空间的using声明
库函数基本上都属于命名空间std。
形式如下:
using namespace::name;
注意:using 声明不应该出现在头文件中。
3.2 标准库类型string
string表示可变长的字符序列。使用string必须包含string头文件,且声明使用命名空间的std。gfr
#include <iostream>using std::string;
3.2.1 string的初始化
string s1; // 定义一个空stringstring s2 = s1; // s2是s1的副本,等同于s2(s1)string s3 = "hello"; // s3是“hello”字符串除了最后一个'\0'结束符的副本string s4(5,'c'); // 等同于 4="ccccc;
注意:当用字符串字面值初始化string时,字符串字面值最后的那个默认结束符不会被送过去,string变量是没有结束符的。使用=的是拷贝初始化(copy initialization),没有等号的是(direct initialization)。
3.2.2 string对象上的操作
在执行读取操作时,string对象会自动忽略开头的空白(空格,制表,换行符等)并从第一个真正的字符开始读起,直到遇到下一个空白为止。
读取未知数量的string对象
while(cin >> str) cout << str <<endl;
上面while语句的条件部分负责在读取时检查流的情况,如果流有效,即没有遇到文件结束符(window用户是ctrl+Z)或非法输入,就一直循环。每一次Enter都会将缓冲区的所有有效字符逐一输出,用换行间隔。但若想保留文字中的空白符就得用getline函数了。
getline函数的参数:一个输入流,一个string对象。
getline函数的功能:从第一个参数给定的输入流读入内容,直到换行符(包括),然后将其存储到第二个参数给定的对象中(不包括换行符)。
getline函数也会返回流参数,所以也能作为条件使用。
while(getline(cin,line)) cout << line << endl;
以上语句在遇到文件结束符之前,将一直循环,每一次回车后都将cin流缓冲区的内容按原格式输出。读取一行中的行由用户输入的Enter决定,即从上一次回车之后到这次回车表示一行,而不是根据屏幕上显示的行(屏幕大小不同)。
string的empty和size操作
empty函数功能:根据string对象是否为空返回一个对应的bool值。为空返回true,非空返回false。直接用点操作符.调用。
size函数功能:返回string对象的长度。(string类型字符串没有字符串结束符'\0')点操作符调用。
注意:size函数返回值是string::size_type类型,是一个无符号类型。可以用auto和decltype推断这种类型。g
其实大多数标准库都定义了几种配套的类型,体现了标准库与机器无关的特性。size_type就是string的配套类型。
比较string对象
逐一比较字符,对大小写敏感。比较原则:"Hello"<"hello"<"hello world"<"hi";即大写字符小于小写字符,前面字符小于后面字符。
string相加
s1 += s2; // 将s2加到s1后面的值存入s1
字符串也可以和字符字面值以及字符串字面值相加。因为标准库允许把字符串字面值和字符字面值转换成string类型,但是做这种混合运算时,必须确保+的两侧至少有一个是string类型。
s = s1 + 'a' + 'a' + "ab"; // 正确,初看好像第二个+两端都是字符字面值,但表达式是从左往右计算的,在第一个加号计算完后,s1+'a'就是string类型了s = 'a' + 'a' + s1 + "ab"; // 错误s = "ab" + "ab" + s1 + "ab"; // 错误
切记:字符串字面值和string类型并不一样!!!g
3.2.3 处理string对象中的字符
cctype头文件中的函数 cctype头文件中的函数 fcctype头文件中的函数cctype头文件中的函数cctype头文件中的函数
0 0
- 《C++ primer》5th读书笔记(chapter3)
- 《C++ primer》5th读书笔记(chapter3)
- 《C++Primer 5th》 读书笔记2--const
- 《C Primer Plus 5th》读书笔记-----指针和多维数组
- 《C++Primer 5th》 读书笔记1---内存与初始化
- c++primer读书笔记(5)
- C++Primer Chapter3课后习题
- c++ primer 5th 第一章读书笔记
- C++ primer读书笔记 chapter3 标准库类型
- 《C Primer Plus 5th》读书笔记----存储类、链接、类型限定词
- C++primer读书笔记5
- 《C++Primer》读书笔记(5)
- C++ primer 5 chapter3 笔记
- C Primer Plus,5th Edition 复习(一)
- C Primer Plus,5th Edition 复习(二)
- C Primer Plus,5th Edition 复习(三) .
- C Primer Plus,5th Edition 复习(四)
- StrVec and String Class Design(C++Primer 5th)
- 2017年SCU校赛总结
- 数据库基础
- Android:实现一个CaseLogin数据存储
- hdu4586——Play the Dice
- hdu1728逃离迷宫(bfs,拐弯问题)
- 《C++ primer》5th读书笔记(chapter3)
- unit10
- NYOJ326_Dining(最大流)
- WebStorm 激活
- android中的spannable的使用
- console.log()的用处
- 异常的分类
- Idea导入项目后 Manifest首行红色 提示URI is not registered
- 【Java正则表达式】