1.使用string类型的对象时须包含的头文件:
#include <string>
using std::string;
istream& getline(istream input,string line)//注意,这里直接是把常用的写出来,其实该函数的原型并不是这样子,具体的使用和声明看查看MSDN.
该函数的参数不用多说,主要是用途:他是从输入流下一行读取,并保存读取的内容到line里
2. string的主要操作说明:
a).size:返回string对象中字符的个数.(返回类型是string:size_type,不要把它赋值给int型)
b).empty:判断string是否为空
注意:当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string.
(2011-12-31)string strTest = "我是一个兵";
int iSize = strTest.size();
int iLen = strTest.length();
cout<<"size = "<<iSize<<" iLen = "<<iLen<<endl;
strTest = "wsygb";
iSize = strTest.size();
iLen = strTest.length();
cout<<"size = "<<iSize<<" iLen = "<<iLen<<endl;
这里主要说明的是size和length获取的是其所占字节的大小.并且不包括'\0'
这里我想要深一步来了解strlen和sizeof,结果发现:sizeof一直都为16,而strlen则与size和length相等.
还有,我经常用到char来做一些字符处理.顺带也一起总结:
char ch[20] = "yws";
int size = sizeof( ch );
int len = strlen( ch );
cout<<"sizeof = "<<size<<" strlen = "<<len<<endl;
结果如下:
还有测试程序:
char* ch = "袁孙良";
int size = sizeof( ch );
int len = strlen( ch );
cout<<"sizeof = "<<size<<" strlen = "<<len<<endl;
返回结果:4,6.
因此:sizeof(指针) = 4,也即首地址.
strlen(ch/指针) = 实际占用的字节数.
最后一种:
cout<<"sizeof = "<<sizeof( "袁孙良" )<<" strlen = "<<strlen( "袁孙良" )<<endl;
结果如下:
如果是字符串常量,sizeof要加上实际占用字节大小加'\0'
(这里说的不是很准确.知道意思就行了.)
这里特别需要指出的是:我们在使用的时候千万不要简单地将两个字符串表示的数字进行比较.这样带来的问题是很严重的.
举例来说吧!
"111111","111112"由于其占用的长度相等,使用比较操作符是没问题,但是如果长度不相等呢?
比如:"99","111111"比较出来的结果肯定不对了.
这个给出的几种解决办法.最容易想到的当然是使用size来先比较大小.相同的话在运用比较操作符.
第二种解决办法是,先不管啥,都转成int类型.在比较大小/
第一种方法可取,第二种方法不可取.(问题有二:1.如果其超过了int表示的范围内的话就悲剧了,2.需要用到atoi来转换,不如直接调用比较操作符来的直接)
3.使用vector类型的对象时须包含的头文件:
#include <vector>
using std:: vector
4.vector的主要操作说明;
a).v.empty():如果为空,则返回true;
b).v.size():返回v中元素的个数.(此时的返回值是vector<int>::size_type)
c).push_back(t):增加值为t的元素
注意:下标操作不添加元素(下标只能获取已存在的元素)
5.迭代器
a).begin和end操作:begin返回的迭代器指向第一个元素.end返回的迭代器指向vector的”末端元素的下一个”.(即哨兵)
b).const_iterator只能用于读取容器内元素,不能改变其值.
注意:任何改变vector长度的操作都会使已存在的迭代器失效.
6.使用bitset类型的对象时须包含的头文件:
#include <bitset>
using std::bitset;
利用string对象初始化bitset对象时,从string对象的读入位集的顺序是从右到左.
例如:string strval(“1011”);
bitset<32>bitval(strval);//bitval的第2位为0