【问题标题】:how can i use _getch() without using "using namespace std;?我如何使用 _getch() 而不使用“使用命名空间 std;?
【发布时间】:2015-06-26 16:36:06
【问题描述】:

为了使用 iostream 库,我们必须编写 using std::cin; 或类似的东西。

使用 _getch() 应该写什么?

我不想使用“using namespace std;

【问题讨论】:

  • getch 既不在命名空间 std 也不在其他任何地方。不要使用它,它是非标准的石器时代的东西。
  • 不,你没有using std::cin..阅读更多关于命名空间和使用它们的可能性。
  • 你不需要写“使用”。你可以只写std::cin。实际上,在我看来,最好用命名空间作为前缀而不是使用“using”,至少因为它可以让你知道你实际调用的是哪个版本的东西(在可能有多个的情况下)。

标签: c++


【解决方案1】:

在标准 c++ 中没有名为 _getch() 的函数。不过,多种方法可以从流中获取字符。如果你想像使用

一样对流进行操作
using namespace std;

...

cin >> myvariable;

但是通过检索单个字符,您想要的是输入流的成员函数get()

您可以使用cin.get() 在控制台输入流上调用它,这将返回从控制台读取的字符。如果您不想使用 using namespace std; 行,只需使用 std::cin.get() 即可。

这是因为标准库中的几乎所有内容都位于std 命名空间中。您始终可以通过在命名空间名称前加上命名空间名称来访问命名空间中的某些内容,而不是使用 using 语句:对于第一个代码,等效的将是

std::cin >> myvariable

您可以使用命名空间和 using 语句做一些其他巧妙的事情,例如指定您只想使用命名空间中的单个项目而不使用说明符。这可以通过这条线来完成(与cin一起玩):

using std::cin;

这让你说

cin >> myvariable;

【讨论】:

  • ... 或删除第一行并写 std::cin >> myvariable :p.
  • @Robinson 我想展示他们显然是如何熟悉获取输入的。由于他们指定没有使用语句,我认为他们想摆脱它。但是,是的,我会编辑它。
  • 是的,请参阅我上面的评论。只是个人喜好,但我总是使用前缀而不是“使用”。
  • @Robinson 嗯,我也是。
【解决方案2】:

你必须写#include <conio.h>

【讨论】:

    【解决方案3】:

    _getch() 是一个(非标准的,Microsoft 特定的)C 函数:由于 C 中没有“命名空间”的概念,因此您不能将 "using namespace std;" 用于 _getch .

    【讨论】:

    • _getch() is a C function: 是吗?我不这么认为。特别是因为首先带有下划线的所有内容都取决于编译器。
    • @deviantfan:它不是标准的 C,但它是 Microsoft CRT 的一部分。我还插入了一个指向正确 MSDN 页面的链接。
    • 它在 Microsoft C 库中,但不在“标准”中。
    【解决方案4】:

    考虑一种情况,当我们在同一个班级中有两个同名的人 Emma。每当我们需要明确区分他们时,我们必须使用一些额外的信息以及他们的名字,比如他们住在不同地区的地区或他们的父母姓名等。

    使用命名空间标准;只不过是用于区分用户定义变量和内置关键字含义的值池。

    所以使用_`

    std:: getch();
    

    ` // 可以正常工作,并且不需要任何库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2011-01-14
      • 2011-07-25
      • 2012-05-02
      相关资源
      最近更新 更多