网站备案专员,湛江市seo网站设计联系方式,软件开发工程师分类,世界足球排名最新最近在学C以及STL#xff0c;打个基础 参考#xff1a; c中的char[] ,char* ,string三种字符串变量转化的兼容原则 c读取字符串和字符的6种函数 字符串结构
首先明确三种字符串结构的兼容关系#xff1a;stringchar*char []
string最灵活#xff0c;内置增删查改…最近在学C以及STL打个基础 参考 c中的char[] ,char* ,string三种字符串变量转化的兼容原则 c读取字符串和字符的6种函数 字符串结构
首先明确三种字符串结构的兼容关系stringchar*char []
string最灵活内置增删查改函数和运算符char*可以改变指向内容改变记录的地址还算灵活char[]是const类型内容即记录的地址不可以变指向空间的内容可以修改纯粹的数组
在后续的函数中string也会对char有兼容。在实际应用中优先把char转string极个别要用到char*的就反向转换string.c_str函数会返回一个指向string储存字符串的const char*指针但要注意这不是拷贝如果要复制一份也就是转换格式就要用strcpy(c,s.c_str())拷贝副本到c里面
读取函数辨析
我将读入函数分成如下几类
常用的 char chcin.get()相当于char chgetchar()单字符读取来者不拒cinchar* ch相当于sacnf(“%s”,char* ch)一般读取清理最开始的连续分隔符读取字符串后遇到任意分隔符停止且保留后续分隔符在缓冲区 定界读取两个函数都会丢弃结尾分隔符 cin.getline(char* ch,总长度结束字符‘\n’)定界读取遇到自定义分隔符停止丢弃分隔符总长度含\0。注意此总长度实际上并不会限制读入如下图会一次性读入1234567之后丢弃超出长度的内容getline(数据源string)定界读取遇到\n停止丢弃分隔符。注意此函数来自string库第二个参数必须是string类其长度不限更加灵活安全 定长读取但是因为还会受到\n分隔符影响实际不太好用 cin.getarr总长度定长读取总长度含\0。注意此函数无法连用遇到\n会停止关键是其不清理\n如果要接下一个需要先清理\nfgets(char*总长度数据源)定长读取遇到\n会读入并停止。注意此函数会读入\n一般场景并不好用不过可以放心连用。getschar*效果同getline但没有string的自动扩容机制也没有cin.getline的强制限制截断长度所以不安全不用