c++和c的头文件区分
来源:互联网 发布:数据库pdforacle网盘 编辑:程序博客网 时间:2024/05/01 12:01
一直都是胡乱用,也没有具体查过,今天闲来无事,一探究竟(以下内容来自别人博客和自己代码测试,如有错误,希望指正)
- c语言头文件有.h,且里面声明的实体都是全局的。而c++标准库的头文件不带.h,且里面的实体都是声明在名空间std里。
举个例子:
iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout;但在iostream里面,它所定义的东西都在名字空间std里面。所以你必须
using namespace std //使用名字空间(使用所有)
或者
using namespace std::cout//只使用cout
或者
在代码前可以用sdt::cout<<表示使用的是std中的cout。
#include<iostream.h> //必须要加上.hvoid main(){cout<<"Right?"<<endl;}#include<iostream> //此处必须去掉.husing namespace std ;void main(){cout<<"Right?"<<endl;}
- 头文件string和cstring都属于c++的组成部分,而string.h属于c
c文件中,是没有string这一类型的,没有#include < string >,所以不能通过string s1来定义一个字符串类型的变量,只能通过字符数组来和指向字符数组的指针定义字符变量,例如:
char str[]=”This is a string”。
但是,c文件里面可以#include < string.h>(对应的是基于char*的字符串处理函数),例如:返回字符串长度的strlen()函数、复制一个字符串到另一个字符串里的strcpy()函数。可以理解,这些方法的参数都是指向字符类型变量的指针,而不是string类型的变量。
#include <stdio.h>#include <string.h>int main(){ char c1[]="nihao"; char c2[]="nihao"; int re=strcmp(c1,c2); int len=strlen(c1); printf("%d\n",re); printf("%d\n",len); return 0;}
然而在c++中,通过#include < string > 就可以直接定义string s1(创建了字符串对象 s,s 是一个空字符串,其长度为0),同时,string对象还有很多方法(插入删除等等),使字符串的处理更简单方便。
C++标准函数库是在C的基础上扩展的,C++标准在继承C标准的时候,去掉了头文件后面的.h,然后在前面加上了C。比如C标准中< stddef.h >到了C++标准中变成了cstddef,可以认为,cstring是C++的组成部分,它可以说是把C的string.h的升级版,但它不是C的组成部分。在c++中同时#include < cstring >意味着你可以对char*变量使用c文件中的strlen等字符串处理函数。
- c++和c的头文件区分
- C头文件和C++头文件的关系
- C头文件和C++头文件的区别
- C语言中.C头文件和.H头文件的概念以及关系
- linux c之c语言符合标准的头文件和linux常用头文件
- C语言的头文件和库文件(函数库)
- 头文件和.cpp 或.c 文件之间的关系
- C语言的头文件和库文件(函数库)
- C语言的头文件
- C/C++的头文件
- C语言的头文件
- c语言的头文件
- C的头文件和java的引包
- 关于C和C++头文件的小记
- C++Template头文件和定义分开编译的问题
- C++-关于头文件和源文件的分别
- C++ 和 C语言 头文件使用全局变量的异同
- C/C++头文件.h和没有.h的区别
- 为什么年轻人越来越反感「亲戚」这群人?
- 1px像素的实现
- 老人是真饿了
- 算法训练 大小写转换
- 130. Surrounded Regions
- c++和c的头文件区分
- 编写更好的 Java 单元测试的 7 个技巧
- 求极限 泰勒公式
- c#调用DLL
- 移动端如何真正实现1像素border
- Tomcat进程被系统终止问题定位
- 总结JavaScript基础的思维导图——持续更新
- hashCode()方法
- setTimeout 自调用