分享
三行代码  ›  专栏  ›  技术社区  ›  Rajan Raju

为什么在包含<iostream>之后还要写std::cin?[副本]

  •  2
  • Rajan Raju  · 技术社区  · 6 月前

    <iostream> header包含输入/输出所需的所有内容。但为什么我们要再写一次 std:: 之前的命名空间 cin 喜欢 std::cin>>var;

    #include <iostream>
    
    int main(int argc, char const *argv[]) {
        int var;
        std::cin>>var;
        return 0;
    }
    
    3 回复  |  直到 6 月前
        1
  •  2
  •   YSC    6 月前

    但为什么我们要再写一次 std:: cin 喜欢 std::cin>>var;

    这是一种保护。这样可以保护 . <iostream> 其他标准包括定义 )具有真正共同名称的标识符,例如。 sort , swap list , transform 等等。

        2
  •  4
  •   Some programmer dude    6 月前

    这个 <iostream> header定义变量 cin 在命名空间内 std

    如果您想在不使用命名空间的情况下使用它,那么您可以使用

    using namespace std;
    

    包含头文件后,请阅读 Why is “using namespace std;” considered bad practice?

    作为一种妥协

    using std::cin;
    

    只靠边停车 std::cin

        3
  •  2
  •   Ladence    6 月前

    因为标准提供的每个机制 std 命名空间。在你的情况下,它是I/O对象 cin

    您可以跳过输入 std:: 每次通过放置 using namespace std Using namespace std considired bad practice )或通过放置 using std::cin 只使用命名空间的一个类(对象)。

        4
  •  1
  •   kurt    6 月前

    同样,C++中的命名空间有助于我们识别所引用的正确工件。想想 cin 作为约翰和命名空间 std 就像大楼里的房间一样。通过使用 std::cin ,我们知道我们指的是 定义在 性病 命名空间而不是其他命名空间。