震惊!<string.h>、<cstring>和<string>竟然可以这么用!
为什么有这么多string相关的头文件呢,小编秦始皇今天带大家看一下:
1.[string.h]
定义如下:“C语言标准库中一个常用的头文件,在使用到字符数组时需要使用。[string.h] 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。常用函数有strlen、strcmp、strcpy等等”。
注意:[string.h] 是c语言的东西,并无类,所以不能 string s1,只能用char。
2.[cstring]
在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新的定义,加入到了标准库中,加入后的文件名就新增了一个"c"前缀并且去掉了.h的后缀名,所以[string.h]头文件成了[cstring]头文件。但是其实现却是相同的或是兼容以前的。
注意:这个就是C艹版的[string.h],与前者包含的内容是一样的,只是这样写说明原头文件也是标准程序库(即裹有std名字空间)的一份子,因此可以与前者等价使用。
3.[string]
在C语言中,一般使用字符数组char str[]存放字符串,但是这样很麻烦(我就不喜欢用)。因此在C++在STL中加入string类型,并对字符串常用的功能进行了封装(例如insert()、length()\size()等)。
注意:这个头文件跟C++的string类半点关系也没有,所以[string]并非[string.h]的“升级版本”,他们是毫无关系的两个头文件;使用时同时还要在头文件下添加using namespace std。
最后总结一下:1和2一样,无非是写法风格问题,而3则不同,其中包含了标准模板库里的许多方便的函数,因此在使用string类时要用3,其余情况则可只使用1或2。
好的,相信大家都知道这三者的区别了,我们下期再会。
震惊!<string.h>、<cstring>和<string>竟然可以这么用!的更多相关文章
- 头文件 string.h cstring string 区别
1.#include <cstring> //不可以定义string s:可以用到strcpy等函数using namespace std; #include <stri ...
- string string.h cstring 区别
c++中 string与string.h 的作用和区别 #include <string.h> void main() { string aaa= "a ...
- string string.h=cstring=str
<string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年 ...
- 【转】<string> <string.h> <cstring>的区别
#include < string.h > void main() { string aaa = " abcsd d " ; printf( " lookin ...
- C++中cstring.h和string.h的区别
转载:https://blog.csdn.net/qian_chun_qiang/article/details/80648691 1.string与cstring有什么区别 <string&g ...
- 字符串操作函数<string.h>相关函数strcpy,strcat,等源码。
首先说一下源码到底在哪里找. 我们在文件中包含<cstring>时,如果点击右键打开文档, 会打开cstring,我们会发现路径为: D:\Program Files\visual stu ...
- 转载:C/C++关于string.h头文件和string类
学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...
- VC CString,int,string,char*之间的转换
CString转string : CString strMfc = "test"; std::string strStr; strStr = strMfc.GetBuffer(); ...
- <string>和<string.h>的区别
转自:http://blog.csdn.net/houjixin/article/details/8648969 在C++开发过程中经常会遇到两个比较容易混淆的头文件引用#include<str ...
- <string> <string.h>
在C++开发过程中经常会遇到两个比较容易混淆的头文件引用#include<string.h> 和 #include<string>,两者的主要区别如下: #include< ...
随机推荐
- CF1485X Codeforces Round #701
D Multiples and Power Differences (构造) 题目大意:给一个n*m的矩阵a,a[i][j]在1到16之间.现在要构造矩阵b,需要满足如下条件: 1.b[i][j]在1 ...
- 渲染一个react?
分为首次渲染和更新渲染 生命周期, 建立虚拟DOM, 进行diff算法 对比新旧DOM, 节点对比, 将算法复杂度从O(n^3)降低到O(n) key值优化, 避免用index作为key值, 兄弟节点 ...
- java-规约-OOP
public class OOP { /** * 避免通过一个类的对象引用访问此类的静态变量或者静态方法 * 直接通过类名去访问 */ // 错误使用例子: public static void ma ...
- Oracle入门基础(六)一一子查询
SQL> --查询工资比SCOTT高的员工信息 SQL> --1. SCOTT的工资 SQL> select sal from emp where ename='SCOTT'; SA ...
- MySQL安装速成指南(ZIP)
MySQL初始化数据库 第一步:将MySQL ZIP压缩包进行解压 第二部:在MySQL主目录创建my.ini文件,并添加以下内容 [client] port=3306 socket=/tmp/mys ...
- Servlet之间的关联
- SpringCloud个人笔记-01-Eureka初体验
eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 serve &l ...
- JDBC和桥接模式
本文参考 网上对于JDBC与桥接模式的理解各有不同,在这片文章里提出的是我个人对于二者的理解,本文参考的其它博文如下: https://blog.csdn.net/paincupid/article/ ...
- Python中module文件夹里__init__.py的功能
怎么引用模块 环境:win7 + python3.5.2文档结构: -project -data -src -filterCorpus.py -translateMonolingual.py 问题 ...
- GoF设计模式-23大设计模式(表格)-程序员必备+必背
在GoF经典著作<设计模式:可复用面向对象软件的基础>中一共描述了23种设计模式. <Design Patterns:Elements of Reusable Object-Orie ...