1、读取数量不定的输入数据
while(std::cin>>value)
或者用getline代替>> 读取一行内容,保留输入的空白符,而string对象会忽略开头的空白
while(getline(cin,line))
2、声明和定义的关系
声明:使得名字为程序所知,规定对象的类型和名字
定义:创建与名字相关的实体,申请存储空间
变量只能被定义一次,但可以有多次声明;
任何包含了显式初始化的声明即成为定义:
int i;//声明并定义了i
声明i但不定义i:
extern int i;
定义i而不声明:
extern int i = 0;
3、命名规范
变量名用小写
自定义类名用大写字母开头
4、范围for循环(可处理string字符的每个对象)
for(declaration:expression) statment
expression是一个对象,表示一个序列
declaration负责定义一个变量,该变量是序列中的基础元素,每次迭代declaration的变量会被初始化为expression的下一个元素值
举例:输出string的每个字符
string str(“abc”); for(auto c : str) cout << c << endl;
如果要用范围for循环改变string对象,则必须把循环变量定义为引用类型
for(auto &c : str) c = toupper(c);//变成大写
5、处理string字符的单个对象
1、使用下标:
s[s.size()]-1 ;//是s字符串最后一个字符
2、使用迭代器
所有标准库容器都可以支持迭代器,但只有少数几种支持下标运算,如vector
v.begin()负责返回指向第一个元素(或字符)的迭代器,v.end() 负责返回指向v尾元素的下一个位置的迭代器(尾后迭代器)。
若元素为空,begin()和end()指向同一个迭代器。
for(auto it = s.begin();it != s.end();++it) statement;
6、++i和i++终结
++i返回对象本身,而i++将原来的对象保存,建立一个副本,自增后返回。
如果不需要使用原始对象,i++的操作会浪费空间。
7、逗号运算符
逗号运算符的结果是右侧表达式的值。