我需要使用 'using namespace std' 命令吗?
Do I need to use the 'using namespace std' command?
我在c++书-> C++ Programming: Visual Quickstart Guide
中读到,为了使用cin
和cout
等语句而不使用std::
,您需要添加using namespace std
行。
然而,目前我正在做a级计算机科学,使用c++和CBuilder,我不需要添加那一行到我的程序-因为我能够使用cout
和cin
在他们自己没有遇到任何错误。
它实际上是不需要的吗?还是Cbuilder配置std
本身?
简而言之:为什么我能够跳过使用std,尽管没有声明我不使用它?
一些编译器/库在标准方面比其他的更宽松:根据标准,你的程序不应该编译。命名空间污染(将名称放在它们不属于的命名空间中,在本例中是全局命名空间)经常发生,当您切换到另一个编译器和/或标准库时,会导致这些和类似的错误。
除非CBuilder有一个选项来添加一个隐式的using namespace std;
到它编译的一切(这将是可怕的),以上是所有人都可以告诉你的。没有"配置"发生在任何地方,不确定您是什么意思
不,您不需要using
语句。它是代码内联显式名称空间引用的替代方法。例如,您可以使用
std::cout << "Hello world" << std::endl;
没有using
语句
或者,您可以包括using namespace std
语句,然后代码:
cout << "Hello world" << endl;
这是一个选择。我个人倾向于省略using
语句并在适当的地方显式插入std::
。
这取决于您使用的编译器。有些编译器会为您添加它。但是为了你自己的利益和知识,添加using namespace std;
或者你必须输入std::
.
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 使用 (cin) 用户输入将其粘贴到 std::system 中,并在另一个终端中运行带有输入的命令
- C++命令末尾的 std::stringstream 空格
- std::cin 无法将命令行中的用户输入传递给具有 char 类型的变量吗?
- G-WAN cc1plus:错误:无法识别的命令行选项"-std=gnu++0x"
- Netbeans 7.2 中 c++ "-std=c++11"无法识别的命令行选项
- 使用命令 std::string::substr 将字符串拆分为C++
- Scons 选择哪个版本的 g++ |无法识别的命令行选项"-std=c++11"
- 在 G++ 编译命令中包含 -std=c++0x 有什么意义?
- C++ txt 文件通过命令行传递(std::ifstream inFile 具有初始值设定项但类型不完整)
- cin命令导致内存位置出现Microsoft C++异常:std::bad_alloc
- 无法识别的命令行选项'-std=c++11'
- cc1plus:错误:无法识别的命令行选项"-std=c++0x"
- 我需要使用 'using namespace std' 命令吗?
- Std::istream没有命令行
- 运行存储在“std::wstring”中的控制台命令
- cc1plus:错误:使用 g++ 无法识别的命令行选项"-std=c++11"
- 错误:' to_string '不是' std '的成员,在gcc 4.8.2的命令行中编译时,在NetBean