提高::文件系统:: create_directories();将文件夹添加到奇怪的位置

时间:2010-02-16 01:48:23

标签: c++ boost

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

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

现在如果双击exe,文件夹“TempFolder”会在与exe相同的目录中创建,我希望如此。但是,如果我现在将文件拖到exe上,则文件夹在“C:\ Documents and Settings \ 0xC0DEFACE”中创建,我当然不期待。

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

我正在运行Windows XP,使用VS9并使用boost 1.39。

1 个答案:

答案 0 :(得分:1)

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

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

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

Windows执行应用程序的方式不同。

在我的可执行文件上删除文件时遇到了类似的问题。