大二寒假读书笔记150127
来源:互联网 发布:影子去除算法 编辑:程序博客网 时间:2024/04/20 05:04
今天下了很大的雪,晚上跟朋友吃罢饭站在路口等绿灯,抬头可以看到路灯光线下的雪,特别特别美。脑海里突然闪过一连串的画面,好像从小时候开始就这么喜欢抬起头看雪。只不过那时候路边的楼没那么高,也不会有颜色斑驳的灯光,路上的车没那么多,妈妈的白头发没那么多,我还只上小学。
1、标准库string类型
用户提供了合适的using声明,编写出来的程序将会变得简短些
#include<string>using std::string;//用std库里的string这个名字,以后有不用写成std::string了下面看下string标准可提供的几个构造函数
string s1;//默认为空串string s2(s1);//初始化为s1的一个副本,跟复制构造函数有啥不一样?string s3("value");//初始化为一个字符串字面值副本!重点在于为什么这么说,不是你想的那么简单string s4(n,'c');//初始化为字符‘c’的n个副本Warning FBI:字符串字面值与标准库string类型不是同一种类型。编程时要注意区分它俩
接着,从标准输入读取到string,并将都入的穿存储在s中。string类型的输入操作符:
读取并忽略开头所有的空白字符(包括不限于空格,换行符,制表符)
读取字符直到再次遇到空白字符,读取终止。
若输入的串是“ Hello world! ”(开头结尾有空格哟),那么读取的是Hello,绝无任何空格
其他方面和内置类型的相似,也是返回左操作数作为运算结果
另外读取未知数目的string对象,语法跟内置类型也一样。再次强调下,
string s;while(cin>>s); cout<<s<<endl;输入操作符返回左操作数,若输入流是有效(未到达文件尾且未遇到无效输入),则执行while循环,反之跳出循环。
2、用getline读取整行文本
getline接受两个参数:输入流对象,string对象。
string s1;while(getline(cin,s1)) cout<<s1<<endl;注意:getline从输入流的下一行读取(啥叫从下一行读取?这一行不读?),保存内容到string对象,但不包括换行符。同时getline不忽略开头的换行符,遇到换行符getline就停止读入并返回,如果第一个就是换行符,string置为空串。
同样,getline将istream草书作为返回值,也可以用它作为判断条件。
3、一些常用操作。
s.empty()//空串返回true,否则返回false,布尔值s.size()//返回字符个数s1 + s2;//连接两个字符串s1 = s2;//s1内容替换为s2的副本s[n];//返回位置为n的字符,位置从0开始技术注意:不要把s.size()的值赋给一个int变量,因为它返回的是string类类型的配套类型string::size_type,其使用 与机器无关,记得前面说不能依赖未定义行为么,同时记得s.size()的值是一个unsigned型,保存一个s.size()的最安全的方法就是使用标准库类型size_type。
比大小:大写字母位于小写字母之前,任何一个大写字母小于任何一个小写字母
4、赋值!
string s1,s2 = "The expense of spirit";s1 = s2;
赋值操作需要先释放掉s1占用的相关内存,再分配给s1足够存放s2副本的内存空间,最后把s2中字符复制到新分配的内存空间,就是说s1的内存空间可能改变
5、和字符串字面值的连接
记得1中说string标准库类型跟字符串字面值常量不是一回事,现在来区分下。先放几个例子:
string s1 = "hello";string s2 = "world";string s3 = s1 + ", ";//okstring s4 = "hello" + ", ";//errorstring s5 = s1 + "," + "world";//okstring s6 = "hello" + ", " + s2;//errors4为什么错?当连接string对象和字符串字面值混合链接操作时,+操作符左右操作数必须至少有一个是string类型的!
s6错的跟s4一样,第一个+操作符使用错误
那s5为什么没错呢?第一个+操作符使用后返回一个新的string对象,然后这个对象跟字符串字面值连接,相当于s3那种情况
6、下标从0开始到s.size()-1结束。跟c的数组很像,不造有没有什么区别。取下标值,然后给下标值赋值也没啥好说的。
有点再说下,取下标的时候,最好定义个string::size_type作为索引变量,如下:
string str = "hello,world";for(string::size_type i = 0;i <= s.size()-1;++i) cout<<str[i]<<endl;不过一般说来,索引变量可以是任何可以产生整型值的表达式,只不过实际的索引类型是unsigned的string::size_type
7、下面给出一些适用于string对象的字符操作函数(或者其他任何的char值),这些函数都在cctype头文件中定义。
isalnum(c) 是字母或数字为trueisalpha(c) 是字母为trueiscntrl(c) 是控制字符为trueisdigit(c) 是数字为trueisgraph(c) 不是空格但可可打印为trueislower(c) 是小写字母为trueisupper(c) 是大写字母为trueisspace(c) 是空格为trueispunct(c) 是标点符号为truetolower(c) 返回其小写字母形式toupper(c) 返回其大写字母形式
可打印字符指的是可以显示表示的字符
空白字符是空格、制表符、垂直制表符、回车符、换行符和进纸符*(走纸换页用,比较少见)
8、C++标准可除了定义一些特定于C++的设施外,还包括了C标准库。c标准库头文件命名形式为name.h,在C++中就命名为cname。少了后缀.h,并在头文件名前加了c
7中用到的cctype在c中为ctype.h。
特别地,cname中定义的名字都定义在std内,而.h版本中的名字却不是这样。
- 大二寒假读书笔记150127
- 大二寒假读书笔记150122
- 大二寒假读书笔记150124
- 大二寒假读书笔记150125
- 大二寒假读书笔记150126
- 大二寒假读书笔记150128
- 大二寒假读书笔记150129
- 大二寒假读书笔记150130
- 大二寒假读书笔记150131
- 大二寒假读书笔记150201
- 大二寒假读书笔记150203
- 大二寒假读书笔记150204
- 大二寒假读书笔记150205
- 大二寒假读书笔记150206
- 大二寒假读书笔记150207
- 大二寒假
- 大二寒假结束言
- 大二寒假计划
- mongodb:对日期进行分组,忽略时分秒
- Apache Kafka:下一代分布式消息系统
- CSS3的box-sizing属性详解
- 数据包、数据帧、
- Apache2.2+MySql5.5+PHP5.4的安装和配置(windows)
- 大二寒假读书笔记150127
- ubuntu14.04正确输入帐号和密码无法进入桌面
- Ubuntu无法更新
- MFC 查找tree control 的 item
- Java和JavaScript的Boolean区别
- UVA 10071 Back to High School Physics
- Automation 即测试相关
- [MySQL] 排序不确定性
- poj 1742 多重背包(单调队列)