C++ 标准库手册
http://www.cplusplus.com/reference/vector/vector/
extern
如果想声明一个变量就用extern,如
extern int j;
但如果在声明语句中包含了初始化,这么做就抵消了extern的作用,而变成定义了,如
extern int j = 3;
上面这句,因为有初始化的行为,就不是声明了,而是定义。
变量只能被定义一次,但可以被声明多次。
如果在多个文件中,同时使用一个变量,就必须将声明和定义分离。这是定义必须出现在且只能出现在一个文件中,而其他用到该变量的文件,必须对其进行声明。
作用域操作符::的含义是:编译器应从操作符左侧的作用域中寻找右侧那个名字
using std::cin;
string 可变长字符序列
#include < string >
using std::string;
C++标准库一方面对类型提供的操作做了详细的规定,另一方面,对库的实现做出一些性能上的需求。
如果使用等号,实际上执行的是拷贝初始化 如 string s = “fupeng”;
不使用等号,是直接初始化 如: string s2 = “beijing”;
类 既能定义通过函数名调用的操作, 也能定义<<, + 等各种运算符在该类对象上的新含义。
is >> s 字符串以空白分割。
getline(is, s) 从is中读取一行,赋给s, is 是输入流
s.empty();
s.size();
s1+s2 连接
在执行读操作时,string对象会自动忽略开头的空白字符,并从第一个真正的字符开始读起,直到遇见下一处空白为止。
<< 和 >> 都是返回左侧的运算对象,因此可以多个输入输出连写在一起。
方便书写的同时,会增加阅读的难度。
如果要读取一行,用getline(cin, s);
这里出发 getline的那个换行符被 丢掉了。并没有存入s中。
s.size() 的返回类型是 string::size_type ,这是一种配套类型, 体现机器无关性。
string::size_type 是一个无符号类型的值,而且足够放下任何string对象的大小。