什么是using namespace std;近年来C++?
在诸如Turbo C++之类的旧编译器中,这似乎不受支持,因为它会导致编译器错误.在最近的C++编译器中,这是编译和运行程序的唯一方法.
Turbo C ++是20年前的编译器。您不应该使用它。
那就是
#include <iostream>
using namespace std;
Run Code Online (Sandbox Code Playgroud)
在现代编译器中,与在Turbo C中为标准标头编写以下代码相同。
#include <iostream.h>
Run Code Online (Sandbox Code Playgroud)
Turbo C ++是预命名空间。因此,所有标准标头都不在中namespace std。因此,您不需要使用namespace std。
using namespace std在Turbo C ++中,您将永远不需要,因为它不支持名称空间。Turbo C ++可能不支持50%的C ++东西-那已经很老了。对Visual C ++使用Visual C ++(Express版本免费)或G ++。
C++使用"名称空间"来分组相关的类和函数.C++标准库几乎完全在名为std("标准"的缩写)的名称空间内定义.当您#include的标准标题<string>包含如下定义时:
namespace std
{
template<typename T>
class allocator;
template<typename Ch>
class char_traits
{
// ...
};
template<typename Ch, typename Traits = char_traits<Ch>, typename Alloc = allcoator<Ch>>
class basic_string
{
// ...
};
typedef basic_string<char, char_traits<char>, allocator<char> > string;
}
Run Code Online (Sandbox Code Playgroud)
名称allocator,char_traits,basic_string并且string都在命名空间中声明std,所以包括报头之后,你需要把它们称为std::string等等.
或者,您可以使用using指令,例如using namespace std使命名空间std中的所有名称在当前作用域中可用,因此遵循using指令您可以说string而不是std::string.
古老的TurboC++编译器不遵循标准,因此其标准库只是将名称放在全局命名空间中,因此您必须引用stringnot std::string而不能使用using-directive.第一个C++标准发布于1998年,所以你不应该在2013年使用预标准编译器,它不会是一个有价值的教育.
| 归档时间: |
|
| 查看次数: |
16307 次 |
| 最近记录: |