关于string的成员函数substr
2008-11-11 21:56
309 查看
这个函数的原型是substr(size_type off,size_type count)
第一个参数表示在string的char数组中的偏移量,count是从这个偏移的位置开始,字串的长度。
这两个参数的错误使用将导致程序crash或者获得错误的结果。
主要两种错误情况,off大于数组的长度或者小于0,和count大于字符串的长度或者count小于0
对于off的错误,当其大于数组的长度是,即是数组越界错误,程序crash。
当提供的off小于0时,由于参数类型为unsigned int,所以将做强制转化,off变为一个很大的整数,因而还是导致越界错误,程序crash。
对于count的错误,当 count + off大于数组的长度时,substr内部会先判断是否其超过数组的长度,如果超过,其将按照数组的最大下标处理。因而其等同于substr(off,string.size()-off);
同理,当count小于0时,其将转化为一个很大的整数,结果还是等同于substr(off,string.size()-off);
综上,在使用该函数时,一定要注意传入的参数,以防止程序crash,或者获得错误的结果。
第一个参数表示在string的char数组中的偏移量,count是从这个偏移的位置开始,字串的长度。
这两个参数的错误使用将导致程序crash或者获得错误的结果。
主要两种错误情况,off大于数组的长度或者小于0,和count大于字符串的长度或者count小于0
对于off的错误,当其大于数组的长度是,即是数组越界错误,程序crash。
当提供的off小于0时,由于参数类型为unsigned int,所以将做强制转化,off变为一个很大的整数,因而还是导致越界错误,程序crash。
对于count的错误,当 count + off大于数组的长度时,substr内部会先判断是否其超过数组的长度,如果超过,其将按照数组的最大下标处理。因而其等同于substr(off,string.size()-off);
同理,当count小于0时,其将转化为一个很大的整数,结果还是等同于substr(off,string.size()-off);
综上,在使用该函数时,一定要注意传入的参数,以防止程序crash,或者获得错误的结果。
相关文章推荐
- 关于string的成员函数substr
- 关于string的成员函数substr
- 关于string的成员函数substr
- 关于string的成员函数substr
- 关于c++的string的成员函数汇总
- 关于js的string的3个函数slice,substring,substr对比
- 关于空指针类型的类变量的成员函数访问的问题
- 关于编译器对c++ 类静态成员、静态成员函数、非静态成员函数的处理
- 关于c++中类静态成员函数可能破坏类封装性的问题
- 整理:CString类的完美总结&&CString 成员函数用法大全&&string 与 CString 转化&&<string><string.h> 和<cstring>的区别
- 关于 类成员函数返回指向const临时变量的引用
- 关于类成员函数中访问同类对象的私有成员
- 关于C++成员函数指针的使用
- C++中string的成员函数
- substr()、compare()、string中的find()函数、
- 关于在C++内用指针调用类的成员函数
- 关于类成员函数结尾带const和不带const的问题
- list排序成员函数对string对象与char*对象排序的差别
- 关于类成员函数中访问同类对象的私有成员
- 关于python字符串string的strip函数的诡异现象