Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么在包含<;之后必须编写std::cin;iostream>;?_C++_Namespaces - Fatal编程技术网

C++ 为什么在包含<;之后必须编写std::cin;iostream>;?

C++ 为什么在包含<;之后必须编写std::cin;iostream>;?,c++,namespaces,C++,Namespaces,据我所知,标题包含输入/输出所需的所有内容。但是为什么我们要在cin之前再次编写std::名称空间,就像std::cin>>var #include <iostream> int main(int argc, char const *argv[]) { int var; std::cin>>var; return 0; } #包括 int main(int argc,char const*argv[]{ int-var; std::cin>>v

据我所知,
标题包含输入/输出所需的所有内容。但是为什么我们要在
cin
之前再次编写
std::
名称空间,就像
std::cin>>var

#include <iostream>

int main(int argc, char const *argv[]) {
    int var;
    std::cin>>var;
    return 0;
}
#包括
int main(int argc,char const*argv[]{
int-var;
std::cin>>var;
返回0;
}
标题定义了命名空间
std
内的变量
cin

如果希望在不加名称空间前缀的情况下使用它,则可以使用

using namespace std;
包含头文件后,请阅读

作为一种妥协,你可以这样做

using std::cin;

只将
std::cin
本身拉入当前范围,而不将其拉入其他范围。

因为标准提供的每个机制都由
std
名称空间包装。在您的例子中,它是I/O对象
cin

您可以跳过每次输入
std::
,方法是使用命名空间std放置
(坏情况请参见:)或使用std::cin放置
,仅使用命名空间的一个类(对象)

但是为什么我们要在
cin
之前再次编写
std::
名称空间,就像
std::cin>>var

这是一种保护。这将保护您
和其他标准包括定义许多(许多)具有真正通用名称的标识符,例如,
排序
交换
列表
转换
,等等


如果没有这种保护,所有这些话都必须保留下来,以便执行。你不会想要的。

考虑一下,你正在一栋楼里找一个叫约翰的人。找到合适的约翰可能很困难,因为大楼里可能不止一个约翰。如果你知道合适的约翰现在在哪个房间,那就容易多了


同样,C++中的命名空间帮助我们识别所引用的正确工件。将

cin
视为John,将命名空间
std
视为大楼中的房间。通过使用
std::cin
,我们知道我们指的是在
std
命名空间中定义的
cin
,而不是其他命名空间。

因为对象是在。这就是C++的工作原理。因为<代码> CIN <代码>在<代码> STD< /Code >命名空间中。过去使用了<代码> Turbo C++ >代码吗?不。我在VIM中编写,从终端编译和运行。您不必(查看答案),但认为代码比读取更频繁地读取。当我看到某个东西前面有一个
std::
时,我会很高兴,因为我知道找到里面的bug的机会比任何东西都少else@formerlyknownas_463035818非常感谢。我已经在我的回答中修正了它