在C ++中运行cmd命令

时间:2013-04-17 09:09:28

标签: c++ windows cmd dos

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

我试图使用:

system("cd .\\south")

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

4 个答案:

答案 0 :(得分:2)

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

您需要_chdir功能:

_chdir("south");

或者,您可以使用WIN32函数SetCurrentDirectory

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

答案 1 :(得分:2)

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

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

方向2: 如果你需要通过执行系统命令来做到这一点(我不知道天气是否可能)。然后,您可以在Windows环境中使用&&执行多个系统命令。

EG:system("cls && date && pause");

答案 2 :(得分:0)

问题是每个system命令都将在不同的进程中执行,因此cd命令将起作用,但对下一个命令无效。

如果您使用的是Linux / Unix系统,则可以使用chdir;对于Win32 API,您可以使用SetCurrentDirectory,但我不确定它是否真的是您想要做的。

答案 3 :(得分:0)

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

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

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

你应该有位置和物体的矢量,以表示游戏中所有可能的位置和物体。

游戏角色还应该有一个他可以随身携带的物品清单(你可以将其扩展到游戏中的其他角色)。

每个位置都应该有:名称,描述和公共出口的十个位置的向量,例如 west ne nw se sw 下来。在该向量中,您可以存储选择该出口时要去的位置编号。

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

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

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

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