1、string类型
int main( ) { string s; cin >> s; cout << s << endl; return 0; }
以上程序输入“ CppLive .COM ”,屏幕上将输出“CppLive”,前面的空白字符(如空格,换行符,制表符等)被忽略,后来的空白字符导致录入结束。
int main( ) { string s1, s2; cin >> s1 >> s2; cout << s1 << s2 << endl; return 0; }
如果给定和上面程序一样的输入,则输出结果将是“CppLive.COM”。
string line; getline(cin, line)
2、只要getline遇到换行符,即便它是第一个输入的字符,getline也将停止读入并返回,如果第一个字符就是换行符,则string参数被置为空string。
3、getline函数返回时将丢弃换行符,不会将其存入string对象中。
4、任何存储string的size操作结果的变量必须为string::size_type类型,切忌把size的返回值赋给一个int变量。
5、当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的,且第一个操作数必须是string类型的。
6、vector不是一种数据类型,而只是一个类模板,称为容器,可以定义任意多种类型,vector类型的每一种都指定了其保存元素的类型,因此vector<int>和vector<string>都是数据类型。
7、使用size_type类型时,必须指出该类型是在哪定义的,vector类型总是包括vector的元素类型,即vector<int>::size_type正确,vector::size_type错误。不难理解,根据类型的不同,size_type能表示的范围肯定不同,故需要有针对性地定义size_type类型。
8、在for循环中使用“!=”跟直接调用,size( )函数比使用“<”跟调用循环前size( )返回值的拷贝更合理。
9、迭代器是一种检查容器内元素并遍历元素的数据类型。
10、由end操作返回的迭代器指向容器的“末端元素的下一个”,通常称为超出末端迭代器,表明它指向一个不存在的元素,如果容器为空,begin与end返回的迭代器相同。
11、迭代器可以使用解引用操作符“*”来访问迭代器所指向的元素。由于end操作返回的迭代器不指向任何元素,因此不能对它进行解引用或自增操作。
12、
//迭代器本身可以自增减但其所指向的元素不能更改 vector<int>::const_iterator //迭代器所指向的元素可以更改,但其自身无法自增减 const vector<int>::iterator
13、任何改变vector长度的操作都会使已存在的迭代器失效,例如,在调用push_back之后,就不能再信赖指向vector的迭代器的值了。
14、string对象和bitset对象之间是反向转化的,string对象的最右边字符(即下标最大的那个字符)用来初始化bitset对象的低阶位(即下标为0的位)。切记!
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。