我正在使用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。答案 0 :(得分:1)
我认为这是因为您“执行”二进制文件的方式。
在第一种情况下,双击它,它将在“当前”目录中运行。
在第二种情况下,您将文件放在其上,导致Windows执行您的二进制文件的不同操作。在第二种情况下,二进制文件在我的“home”目录中运行。我相信。
Windows执行应用程序的方式不同。
在我的可执行文件上删除文件时遇到了类似的问题。