1、命名空间的using声明
格式:
1)using namespace::name; 如 using std::cin;
2)using namespace 命名空间名; 如 using namespace std;
2、string类型
1)必须包含的头文件
#include <string>
using std::string;
2)string对象的读写
a)cin读取,读取并忽略开头所有的空白字符;读取字符直至再次遇到空白字符,则读取终止。
string str ;
cin >> str ;//
b)未知数目的string对象读取
string word;
while( cin >> word)
{
//process
}
c)用getline读取整行文本,从输入流中的下一行读取,并保存读取的内容到string对象,但不包括换行符。getline并不忽略行开头的换行符,遇到换行符,则停止读入并返回。(getline 函数返回时,丢弃换行符,换行符将不会存储在string对象中。)
string line;
while( getline ( cin, line ) )
{
//process,注意line中不包含换行符,若需换行,则要自行添加。
}
d)两个string对象相加的注意事项
进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型。
e)从string对象中获取字符
string str( "some string" );
for( string::size_type ix = 0; ix != str.size() ; ++ix)
cout<<str[ix]<<endl;
f)从文件中读取字符串(今后补充下,现在写不出代码)
fstream openfile( "filename" );
string str_line
while( getline ( openfile, str_line) )
{
}
g)size成员函数来获取string的大小。
for ( string::size_type index =0; index != s.size() ; ++index )
3、vector类型
包含的头文件 #include <vector>
using std::vector;
1)vector对象的一个重要属性就在于可以在运行时高效地添加元素。
2)vector中添加元素的方法:
使用push_back(),push_front()等成员函数;
3)vector访问其元素
a)下标操作,必须是已存在的元素才能用下标操作符进行索引,通过下标操作进行赋值时,不会添加任何元素。
vector<int> ivec;
for( vector<int>::size_type ix = 0; ix != ivec.size() ; ++ix )
{
ivec[ix]=0; //给元素赋值
ivec.push_back(ix); //添加元素
}
b)使用迭代器 (iterator)
vector<int> ivec;
for( vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++ivec )
{ //ivec.end() 返回的迭代器指向vector的“末端元素的下一个”。
//通常称为超出末端迭代器,指向一个不存在的元素。
*iter=0; //等价于ivec[ix]=0;
}
c)const_iterator类型,只能用于读取容器内的元素,但不能改变其值。
4)vector与数组的比较
a)数组的长度是固定的,而且程序员无法知道一个给定数组的长度。
b)数组不提供自动添加元素的功能,如果需要更改数组的长度,只能创建一个更大的新数组,然后把原数组的所有元素复制到新数组的空间。
c)只有当性能测试表明使用vector无法达到必要的速度要求是,才使用数组。
4、标准库bitset类型
包含的头文件: #include <bitset>
using std::bitset;
1)bitset对象的定义和初始化
bitset<32> bitvec; //32bits,all zero。
2)初始化
用unsigned值初始化bitset对象,bitset类型长度大于unsigned long值的二进制位时,高位将置0;小于时,则截断处理。
用string对象初始化bitset对象,string对象直接表示为为模式。从string对象读入位集的顺序是从右到左。
eg: string str( "1111110000011100010" );
bitset<32> bitvec5( str, 5, 4 );//从str[5]开始包含4个字符的字串来初始化bitvec5.
3)bitset对象上的操作
b.any(); b.none(); b.count(); b.size(); b.set(); b.to_ulong(); os<<b;
b.count()返回的是size_t类型,size_t类型定义在<cstddef>头文件中。
b.to_ulong() 用b中同样的二进制位返回一个unsigned long值。