【问题标题】:Running cmd commands in C++在 C++ 中运行 cmd 命令
【发布时间】:2013-04-17 09:09:27
【问题描述】:

我正在尝试基于 C++ 进行文本冒险。我制作了包含每个路径的特定文件的文件夹。假设我从一个房间往南走,我需要进入一个名为“south”的文件夹。我在这里遇到问题,因为我不知道如何在 C++ 中更改像“cd .\south”这样的目录。请告诉我如何在 C++ 中更改目录。

我尝试使用:

system("cd .\\south")

但它不会更改目录。我也在谷歌上搜索过,但它提供了另一个名为“ShellExecute”的函数的链接,我不知道如何使用。请帮助(我是一个完整的初学者)。

【问题讨论】:

  • 为什么要进入到一个特定的文件夹?更改当前进程的目录后,您想做什么?
  • 如果你向南,然后向北,你在目录“south/north”中,但同一个房间?我不确定这是一个明智的设计;)
  • 使用文件夹作为游戏内容数据是不明智的。
  • "go WINDOWS", "go SYSTEM32", "attack * with DEL"
  • @ArneMertz - 如果我去南方,然后去北方,那么我在原始目录中。这就像在做“cd ..”。我知道这不是一个明智的设计。我会尝试修改它。感谢您的反馈。

标签: c++ windows cmd dos


【解决方案1】:

system 函数为命令创建一个新进程。这意味着任何目录更改都将是该新进程的本地。

您需要 _chdir 函数:

_chdir("south");

您也可以使用 WIN32 函数SetCurrentDirectory

注意:_chdir 是 Windows CRT 函数名称,在 POSIX 系统(如 Linux 或 OSX)上为 chdir(不带前导下划线)。

【讨论】:

    【解决方案2】:

    方向 1: 只需更改current directory。为此阅读这篇文章 http://msdn.microsoft.com/en-us/library/windows/desktop/aa363806(v=vs.85).aspx

    但如果您的应用程序是多线程的。那么你需要小心。因为当前目录对整个应用程序是通用的,所以其他线程可能会更改应用程序current directory

    方向 2: 如果您需要通过执行系统命令来执行此操作(我不知道天气可能)。那么你就可以在windows环境下使用&&执行多个系统命令了。

    例如:system("cls && date && pause");

    【讨论】:

      【解决方案3】:

      问题是每个system 命令都会在不同的进程中执行,所以你的cd命令可以工作,但对下一个命令无效。

      如果你在 Linux/Unix 系统上,你可以使用 chdir,或者在 Win32 API 上使用 SetCurrentDirectory,但我不确定这是否真的是你想要做的。

      【讨论】:

      • 除非您提供解决方案,否则这并不是真正的答案,例如chdir.
      【解决方案4】:

      您正在做的具体问题的答案已经给出。但是,我想知道您为什么要尝试更改当前目录以响应用户给出的命令。

      也许你这样做是因为你想获得一些特定的知识,但是,要考虑到面对文本冒险的一般方式不是在计算机中创建文件夹,而是创建适当的结构。

      您至少应该有以下课程:LocationObjectCharacter

      您应该有位置和对象的向量,以便表示游戏中所有可能的位置和对象。

      游戏角色还应该有一个他可以随身携带的物品列表(尽管您可以将其扩展到游戏中的其他角色)。

      每个位置都应该有一个:名称、描述和一个由十个位置组成的公共出口的向量,例如northsoutheast em>, west, ne, nw, se, sw, 向上向下。在该向量中,您可以存储选择该出口时要前往的位置编号。

      最后,您需要解析玩家的输入,以便游戏能够理解命令。

      当然,这是冒险的最低要求。 您可以使用现有的系统,例如 Inform,但我不知道您是否正在尝试锻炼您的 C++ 技能。

      请记住,您可以通过访问互动小说论坛寻求真正的冒险专家的帮助:

      http://www.intfiction.org/forum/

      【讨论】:

      • 谢谢先生!但是你知道吗,我不太愿意学习它,因为我正在做的这个项目只是我学校作业活动的一部分,所以它一定不会那么复杂(只是一个教我们基本 cmd 命令的基础项目使用 c++ 执行。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多