увеличить файловую систему copy_file & quot; успешно & quot; но файлы не скопированы

У меня проблемы с выяснением, почему мои файлы не копируются. Вот краткая часть кода:

(dir_itr является каталогом_тератора & root это путь)

if (!(is_directory(dir_itr->path())))
{
cout << "copying: " << dir_itr->path().filename() << endl;
try
{
copy(dir_itr->path(), root);
remove(dir_itr->path());
} catch (filesystem_error& ex) {
//more code

Результаты в командной строке следующие:

boost::filesystem::copy_file: The operation completed successfully:
"C:\Documents and Settings\R\Desktop\New Folder\New Folder (2)\New Bitmap Image 3.bmp",
"C:\Documents and Settings\R\Desktop\New Folder"

Однако файлы не копируются.

Я просто пытаюсь переместить указанный файл из папки c:\x\y\file.file в c:\x

Я предполагаю, почему я не могу переместить это потому, что мне нужно полное имя файла, а не просто каталог или что-то еще? Если это так, как мне преобразовать путь корня в строку, чтобы я мог добавить к нему имя файла? (я получаю тысячу ошибок, если я даже попробую, они настолько длинные, что я не могу прокрутить весь путь вверх по окну, чтобы увидеть, где оно начинается)

1

Решение

возможно повышение :: файловая система :: system_complete может помочь:

(Извините, у меня Mac, а не Windows, но он показывает способ получить абсолютный путь из относительного пути). Удачи.

#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;

int main(int argc, char *argv[]) {
boost::filesystem::path cwd(".");
boost::filesystem::path resolved = boost::filesystem::system_complete(cwd);

std::cout << cwd << std::endl;
std::cout << resolved << std::endl;
}

Выходы:

".""/private/var/folders/qw/x23nm9f11fxc45rgddb04n_w0000gn/T/CodeRunner/."
1

Другие решения

Вернулся к работе над этим, и я добавил / изменил следующее:

try
{
string temp = root.string() + "\\" + dir_itr->path().filename().string();
path p(temp);
copy(dir_itr->path(), p);
remove(dir_itr->path());
//more code

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

0