2016-11-20 108 views
0

正如标题所示,即使是超级简单的C++程序,我也无法使用“cd”。更准确地说,我可以使用它(即它编译并且不会抛出任何错误),但它继续进行,就好像我没有。使用C++中的system()无法更改目录

我的代码如下:

#include <iostream> 
#include <cstdlib> 

int main() 
{ 
    system("cd"); 
    system("dir"); 

    system("cd C:\\Users\\Sajado"); 
    system("dir"); 

    return 0; 
} 

输出窗口两次返回项目目录的目录列表。我也尝试使用路径其他文件夹,既高和低, cd .. 也没有效果。

我使用的是codeblocks,如果有帮助。我不是任何C++或cmd专家,所以我可能会错过一些非常明显的东西。任何人都知道为什么这可能是行为不端?

+3

的'系统()'电话是独立的。每次你都会得到一个新的环境。做你想做的事情创建一个批处理文件,并在一个'system()'中执行cmd.exe。 – drescherjm

+0

为什么不使用'chdir'? – jpo38

回答

2

由于explained here,你需要做的:

system("cd C:\\Users\\Sajado && dir"); 

因为

更改后的目录只持续了系统 命令的持续时间。该命令启动一个单独的程序,该程序从您的程序中继承其当前目录,但当该程序退出时,其当前目录将随之死亡。

+0

好的。感谢大家的回答。很有帮助。 – Sajado

0

正如评论@drescherjm指出,system通话对方的隔离,所以如果你改变了工作目录中的话,会不会在随后的电话反映解释。

你可以这样做: system("cd C:\\Users\\Sajado && dir");或者更好的是,使用的一个参数dir命令:system("dir C:\\Users\\Sajado");