c中string的sizelengthcapacity三者到底有何区别求解.docx
- 文档编号:8470200
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:19
- 大小:54KB
c中string的sizelengthcapacity三者到底有何区别求解.docx
《c中string的sizelengthcapacity三者到底有何区别求解.docx》由会员分享,可在线阅读,更多相关《c中string的sizelengthcapacity三者到底有何区别求解.docx(19页珍藏版)》请在冰豆网上搜索。
c中中string的的sizelengthcapacity三者到底有何区别求解三者到底有何区别求解C+中string的size,length,capacity三者到底有何区别求解啦?
(2013-11-2211:
23:
34)#include#includeusingnamespacestd;voidDisplay(conststring&str)coutString:
strendl;coutSize:
str.size()endl;coutLength:
str.length()endl;coutCapacity:
str.capacity()endl;coutMaxsize:
str.max_size()endl;coutendl用于输入,同样重载运算符operator,=,时返回1,s1s2s3s4;/s1=hello,this,s2=is,s3=a,s4=testostringstreamos;oss1s2s3s4;coutos.str();已知类String的原型为:
classStringpublic:
String(constchar*str=NULL);/普通构造函数String(constString&other);/拷贝构造函数String(void);/析构函数String&operator=(constString&other);/赋值函数private:
char*m_data;/用于保存字符串;请编写String的上述4个函数。
/普通构造函数String:
String(constchar*str)if(str=NULL)m_data=newchar1;/对空字符串自动申请存放结束标志0的/加分点:
对m_data加NULL判断*m_data=0;elseintlength=strlen(str);m_data=newcharlength+1;/若能加NULL判断则更好strcpy(m_data,str);/String的析构函数String:
String(void)deletem_data;/或deletem_data;/拷贝构造函数String:
String(constString&other)/输入参数为const型intlength=strlen(other.m_data);m_data=newcharlength+1;/对m_data加NULL判断strcpy(m_data,other.m_data);/赋值函数String&String:
operator=(constString&other)/输入参数为const型if(this=&other)/检查自赋值return*this;deletem_data;/释放原有的内存资源intlength=strlen(other.m_data);m_data=newcharlength+1;/对m_data加NULL判断strcpy(m_data,other.m_data);return*this;/返回本对象的引用剖析:
能够准确无误地编写出String类的构造函数、拷贝构造函数、赋值函数和析构函数的面试者至少已经具备了C+基本功的60%以上!
在这个类中包括了指针类成员变量m_data,当类中包括指针类成员变量时,一定要重载其拷贝构造函数、赋值函数和析构函数,这既是对C+程序员的基本要求,也是EffectiveC+中特别强调的条款。
仔细学习这个类,特别注意加注释的得分点和加分点的意义,这样就具备了60%以上的C+基本功!
C/C+头文件一览C#include/设定插入点#include/字符处理#include/定义错误码#include/浮点数处理#include/对应各种运算符的宏#include/定义各种数据类型最值的常量#include/定义本地化C函数#include/定义数学函数#include/异常处理支持#include/信号机制支持#include/不定参数列表支持#include/常用常量#include/定义输入输出函数#include/定义杂项函数及内存分配函数#include/字符串处理#include/定义关于时间的函数#include/宽字符处理及输入输出#include/宽字符分类传统C+#include/改用#include/改用#include/改用#include/该类不再支持,改用中的stringstream标准C+#include/STL通用算法#include/STL位集容器#include/字符处理#include/定义错误码#include/浮点数处理#include/对应各种运算符的宏#include/定义各种数据类型最值的常量#include/定义本地化函数#include/定义数学函数#include/复数类#include/信号机制支持#include/异常处理支持#include/不定参数列表支持#include/常用常量#include/定义输入输出函数#include/定义杂项函数及内存分配函数#include/字符串处理#include/定义关于时间的函数#include/宽字符处理及输入输出#include/宽字符分类#include/STL双端队列容器#include/异常处理类#include/文件输入输出#include/STL定义运算函数(代替运算符)#include/定义各种数据类型最值常量#include/STL线性列表容器#include/本地化特定信息#include/STL映射容器#include/STL通过分配器进行的内存分配#include/动态内存分配#include/STL常用的数字操作#include/参数化输入输出#include/基本输入输出支持#include/输入输出系统使用的前置声明#include/数据流输入输出#include/基本输入流#include/STL迭代器#include/基本输出流#include/STL队列容器#include/STL集合容器#include/基于字符串的流#include/STL堆栈容器#include/标准异常类#include/底层输入输出支持#include/字符串类#include/运行期间类型信息#include/STL通用模板类#include/对包含值的数组的操作#include/STL动态数组容器C99增加的部分#include/复数处理#include/浮点环境#include/整数格式转换#include/布尔环境#include/整型环境#include/通用类型数学宏头文件ctype.h字符处理函数:
本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换-字符测试是否字母和数字isalnum是否字母isalpha是否控制字符iscntrl是否数字isdigit是否可显示字符(除空格外)isgraph是否可显示字符(包括空格)isprint是否既不是空格,又不是字母和数字的可显示字符ispunct是否空格isspace是否大写字母isupper是否16进制数字(09,A-F)字符isxdigit字符大小写转换函数转换为大写字母toupper转换为小写字母tolower头文件local.h地区化:
本类别的函数用于处理不同国家的语言差异。
-地区控制地区设置setlocale数字格式约定查询国家的货币、日期、时间等的格式转换localeconv头文件math.h数学函数:
本分类给出了各种数学计算函数,必须提醒的是ANSIC标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklinC51)-反余弦acos反正弦asin反正切atan反正切2atan2余弦cos正弦sin正切tan双曲余弦cosh双曲正弦sinh双曲正切tanh指数函数exp指数分解函数frexp乘积指数函数fdexp自然对数log以10为底的对数log10浮点数分解函数modf幂函数pow平方根函数sqrt求下限接近整数ceil绝对值fabs求上限接近整数floor求余数fmod头文件setjmp.hio.h本分类函数用于实现在不同底函数之间直接跳转代码。
-保存调用环境setjmp恢复调用环境longjmp头文件signal.h信号处理:
该分类函数用于处理那些在程序执行过程中发生例外的情况。
-指定信号处理函数signal发送信号raise头文件stdarg.h可变参数处理:
本类函数用于实现诸如printf,scanf等参数数量可变底函数。
-可变参数访问宏可变参数开始宏va_start可变参数结束宏va_end可变参数访问宏访问下一个可变参数宏va_arg头文件stdio.h输入输出函数:
该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现-删除文件remove修改文件名称rename生成临时文件名称tmpfile得到临时文件路径tmpnam文件访问关闭文件fclose刷新缓冲区fflush打开文件fopen将已存在的流指针和新文件连接freopen设置磁盘缓冲区setbuf设置磁盘缓冲区setvbuf格式化输入与输出函数格式输出fprintf格式输入fscanf格式输出(控制台)printf格式输入(控制台)scanf格式输出到缓冲区sprintf从缓冲区中按格式输入sscanf格式化输出vfprintf格式化输出vprintf格式化输出vsprintf字符输入输出函数输入一个字符fgetc字符串输入fgets字符输出fputc字符串输出fputs字符输入(控制台)getc字符输入(控制台)getchar字符串输入(控制台)gets字符输出(控制台)putc字符输出(控制台)putchar字符串输出(控制台)puts字符输出到流的头部ungetc直接输入输出直接流读操作fread直接流写操作fwrite文件定位函数得到文件位置fgetpos文件位置移动fseek文件位置设置fsetpos得到文件位置ftell文件位置复零位remind错误处理函数错误清除clearerr文件结尾判断feof文件错误检测ferror得到错误提示字符串perror头文件stdlib.h实用工具函数:
本分类给出了一些函数无法按以上分类,但又是编程所必须要的。
-字符串转换函数字符串转换为整数atoi字符串转换为长整数atol字符串转换为浮点数strtod字符串转换为长整数strtol字符串转换为无符号长整型strtoul伪随机序列产生函数产生随机数rand设置随机函数的起动数值srand存储管理函数分配存储器calloc释放存储器free存储器分配malloc重新分配存储器realloc环境通信中止程序abort退出程序执行,并清除环境变量atexit退出程序执行exit读取环境参数getenv程序挂起,临时执行一个其他程序system搜索和排序工具二分查找(数据必须已排序)bsearch快速排序qsort整数运算函数求绝对值abs得到除法运算底商和余数div求长整形底绝对值labs求长整形除法的商和余数ldiv多字节字符函数得到多字节字符的字节数mblen得到多字节字符的字节数mbtowc多字节字符转换wctomb多字节字符的字符串操作将多字节串转换为整数数组mbstowcs将多字节串转换为字符数组mcstowbs头文件string.h字符串处理:
本分类的函数用于对字符串进行合并、比较等操作-字符串拷贝块拷贝(目的和源存储区不可重叠)memcpy块拷贝(目的和源存储区可重叠)memmove串拷贝strcpy按长度的串拷贝strncpy字符串连接函数串连接strcat按长度连接字符串strncat串比较函数块比较memcmp字符串比较strcmp字符串比较(用于非英文字符)strcoll按长度对字符串比较strncmp字符串转换strxfrm字符与字符串查找字符查找memchr字符查找strchr字符串查找strcspn字符串查找strpbrk字符串查找strspn字符串查找strstr字符串分解strtok杂类函数字符串设置memset错误字符串映射strerror求字符串长度strlen头文件time.h日期和时间函数:
本类别给出时间和日期处理函数-时间操作函数得到处理器时间clock得到时间差difftime设置时间mktime得到时间time时间转换函数得到以ASCII码表示的时间asctime得到字符串表示的时间ctime得到指定格式的时间strftime序号库类别头文件-1错误处理errno.h2字符处理ctyphe.3地区化local.h4数学函数math.h5信号处理signal.h6输入输出stdio.h7实用工具程序stdlib.h原文地址:
http:
/转载请注明出处8字符串处理string.hjavascript:
void(0);javascript:
void(0);javascript:
void(0);javascript:
void(0);javascript:
void(0);javascript:
void(0);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- string sizelengthcapacity 到底 区别 求解