C++中尖括号和引号的区别---转载

本文详细解释了C++中包含头文件的两种方式:#include<文件名>和#include文件名的区别及应用场景。介绍了如何按照C++标准正确地包含系统头文件和自定义头文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作#include <文件名>,但有时候又会出现#include "文件名"。你会很疑惑,到底哪个是对的呢?为什么要有这两种不同的写法呢?

这两种写法都是正确的写法,但是它们却是有区别的。我们知道C++已经有一些编写好的头文件(比如标准函数库等等),它们存放在VC++的Include文件夹里。当我们使用#include <文件名>命令时,编译器就到这个文件夹里去找对应的文件。显然,用这种写法去包含一个我们自己编写的头文件(不在那个Include文件夹里)就会出错了。所以包含C++提供的头文件时,应该使用尖括号。
相反地,#include "文件名"命令则是先在当前文件所在的目录搜索是否有符合的文件,如果没有再到Include文件夹里去找对应的文件。因此,无论这个文件是C++提供的还是自己编写的,使用#include "文件名"命令一定是正确的。这也正是书中本节之前的程序一律使用#include "文件名"命令的原因。

关于标准的尖括号
最新的C++标准中,包含C++提供的头文件并不是写作#include <文件名>,如#include <iostream.h>的写法是过时的。正确的写法是#include <iostream>,并且要使用std名字空间。有些程序中会有using namespace std;就是按照这种标准书写的。名字空间也称为命名空间,主要是用来避免大型程序开发中的标志符冲突。标准还规定了如何在C++中包含C的头文件,有兴趣的读者可以到网上查阅这些资料。


尽管以上两种#include命令都可以正确地被VC++识别了,但是它们却并不符合C++的标准。标准规定,包含C++提供的标准头文件或系统头文件时应使用尖括号,包含自定义头文件时可使用双引号。 鉴于这里已经交代清楚了如何按照标准来包含一个头文件,在之后的章节中,所有程序的#include命令将按标准来书写。

试试看:
如果包含头文件时写作如#include <iostream>,但是没有using namespace std;,即没有使用std名字空间,能否正常实现输入输出功能?
结论:如果按照这样的写法,必须要使用std名字空间。
 
 
转载自http://c.biancheng.net/cpp/biancheng/view/66.html
### 尖括号的作用使用场景 #### 1. 包含标准库头文件 在 C++ 中,尖括号 `<...>` 主要用于包含标准库头文件。例如: ```cpp #include <iostream> #include <vector> ``` 这种写法告诉编译器,在系统的预定义路径中查找这些头文件[^3]。标准库头文件通常不依赖于项目中的其他文件,因此适合使用尖括号来引用它们[^5]。 #### 2. 模板参数列表 C++ 中的模板编程广泛使用尖括号来指定类型参数。例如: ```cpp std::vector<int> myVector; ``` 在 C++98 中,如果遇到连续两个右尖括号 `>>`,需要在中间添空格以避免解析错误。例如: ```cpp std::vector<std::vector<int> > myMatrix; ``` 但在 C++11 及以后的标准中,可以直接写作: ```cpp std::vector<std::vector<int>> myMatrix; ``` 这一改进提高了代码的可读性简洁性[^2]。 #### 3. 类型转换表达式 C++ 提供了几种类型转换操作符,如 `static_cast`、`dynamic_cast`、`reinterpret_cast` `const_cast`,这些操作符都需要使用尖括号来指定目标类型。例如: ```cpp int i = 10; double d = static_cast<double>(i); ``` 这种语法结构使得类型转换更明确,并且可以在编译时进行更严格的检查[^2]。 #### 4. 命名空间(Namespace) 虽然命名空间本身并不直接使用尖括号,但与标准库一起使用时,通常需要通过 `std::` 来访问标准库中的功能。例如: ```cpp std::cout << "Hello, World!" << std::endl; ``` 如果不使用 `using namespace std;`,则必须显式地上 `std::` 前缀,否则编译器将无法识别这些标识符[^1]。 #### 5. 预处理器指令中的搜索路径 当使用 `#include <...>` 时,编译器会优先在系统预定义的头文件搜索路径中查找文件。这种方式适用于标准库头文件或第三方库提供的头文件[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值