повышение :: файловой системы :: create_directories (); добавление папок в странные места - PullRequest
4 голосов
/ 16 февраля 2010

Я использую boost, чтобы создать каталог для размещения временных файлов.

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

Теперь, если дважды щелкнуть исполняемый файл, папка «TempFolder» будет создана в том же каталоге, что и исполняемый файл, что я ожидаю. Однако, если я сейчас перетащу файл на исполняемый файл, папка будет создана в "C: \ Documents and Settings \ 0xC0DEFACE" , чего я, конечно, не ожидал.

Видя, что мое приложение не изменилось, и распечатанный каталог не изменился, и мое приложение в настоящее время игнорирует пропущенные строки, почему папка теперь создается в новом каталоге?

Я использую Windows XP с VS9 и использую Boost 1,39.

1 Ответ

1 голос
/ 16 февраля 2010

Я думаю, это из-за того, как вы «исполняете» свой двоичный файл.

В первом случае вы дважды щелкнете по нему, и он запустится в текущем каталоге.

Во втором случае вы перетаскиваете на него файл, который вызывает различные действия Windows для выполнения вашего двоичного файла. Я полагаю, что во втором случае бинарный файл запускается в вашем «домашнем» каталоге.

Это разница между тем, как Windows выполняет ваше приложение.

У меня были похожие проблемы при переносе файлов на мой исполняемый файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...