下列哪些头文件包含在std命名空间中?( 二 )


前面几节我们使用了C语言的格式输出函数 printf,引入了C语言的头文件 stdio.h,将C代码和 C++ 代码混合在了一起,我不推荐这样做 , 请尽量使用 C++ 的方式 。下面的例子演示了如何使用 C++ 库进行输入输出:
#include <iostream>#include <string>int main(){ //声明命名空间std using namespace std; //定义字符串变量 string str; //定义 int 变量 int age; //从控制台获取用户输入 cin>>str>>age; //将数据输出到控制台 cout<<str<<"已经成立"<<age<<"年了!"<<endl; return 0;}运行结果:
C语言中文网↙
6↙
C语言中文网已经成立6年了!
string 是 C++ 中的字符串类,初学者可以将 string 看做一种内置的数据类型,就像 int、float 等,可以用来定义变量 。cin 用于从控制台获取用户输入,cout 用于将数据输出到控制台,下节我们会详细讲解 。
读者暂时不需要深入了解这段代码的细节,只需要留意using namespace std; , 它声明了命名空间 std,后续如果有未指定命名空间的符号 , 那么默认使用 std,代码中的 string、cin、cout 都位于命名空间 std 。
在 main() 函数中声明命名空间 std,它的作用范围就位于 main() 函数内部,如果在其他函数中又用到了 std,就需要重新声明,请看下面的例子:
#include <iostream>void func(){ //必须重新声明 using namespace std; cout<<"***"<<endl;}int main(){ //声明命名空间std using namespace std; cout<<"C语言中文网"<<endl; func(); return 0;}如果希望在所有函数中都使用命名空间 std,可以将它声明在全局范围中,例如:
#include <iostream>//声明命名空间stdusing namespace std;void func(){ cout<<"***"<<endl;}int main(){ cout<<"C语言中文网"<<endl; func(); return 0;}很多教程中都是这样做的,将 std 直接声明在所有函数外部,这样虽然使用方便,但在中大型项目开发中是不被推荐的,这样做增加了命名冲突的风险,我推荐在函数内部声明 std 。
不过为了方便,本教程还是忍不住违反了原则 , 后面有很多代码都在全局范围内声明了 std 。


推荐阅读