代码之家  ›  专栏  ›  技术社区  ›  0xC0DEFACE

boost::filesystem::create_directories();将文件夹添加到奇怪的位置

  •  4
  • 0xC0DEFACE  · 技术社区  · 16 年前

    我正在使用boost创建一个目录来放置一些临时文件。

    int main( int argc, char* argv[] )
    {
        std::cout << "Current Dir: " << argv[0] << std::endl;
        boost::filesystem::create_directories( "TempFolder" );
        return 0;
    }
    

    现在,如果双击exe,文件夹 “Twitter” 是在与exe相同的目录中创建的,这是我所期望的。但是,如果我现在将一个文件拖到exe上,文件夹将在其中创建。 “C:\documents and settings \0xc0deface” 我当然没想到。

    看到我的应用程序没有更改,打印出的目录也没有更改,我的应用程序当前忽略传递的字符串,为什么文件夹现在正在新目录中创建?

    我运行的是WindowsXP,使用的是VS9,使用的是Boost1.39。

    1 回复  |  直到 16 年前
        1
  •  1
  •   stefanB    16 年前

    我认为这是因为你“执行”二进制文件的方式。

    在第一种情况下,您双击它,它将在“当前”目录下运行。

    在第二种情况下,您删除文件,这会导致Windows执行不同的二进制操作。在第二种情况下,我相信二进制文件运行在您的“home”目录中。

    这是Windows如何执行应用程序的区别。

    在将文件放到可执行文件上时,我遇到了类似的问题。