Системная копия файла с пробелом

0

Используя команду командной строки в C++, я не смог выполнить команду, так как мой каталог имеет пространство между двумя символами, "журнал" и "файл". Возможно, регулярное выражение может помочь мне решить эту проблему. Но у меня не было идей, как это сделать.

system("copy C:\users\person\log file C:\users\person\desktop")
  • 0
    Помогает ли заключить в кавычки имя файла с пробелами?
  • 0
    stackoverflow.com/questions/9964865/...
Показать ещё 6 комментариев
Теги:
copy

2 ответа

0

Я считаю, что @tabstop ссылался на " std :: rename ", что является одним из решений. Способ копирования файла будет работать только в том случае, если в операционной системе есть команда "copy". Если бы вы запускали эту программу, скажем, iOS, это не сработало.

Вот лучший способ сделать это в C++ способе (решение, привитое отсюда: скопировать файл разумным, безопасным и эффективным способом)....

#include <fstream>

int main(char** argv, int argc) 
{
   std::ifstream  src("C:\\users\\person\\log file", std::ios::binary);
   std::ofstream  dst("C:\\users\\person\\desktop",   std::ios::binary);

   dst << src.rdbuf();
}

Не забывайте о дополнительной обратной косой чертой. Вы нуждаетесь в них, потому что обратная косая черта - это escape-символ, который будет включать или выключать функциональность (например,\n для новой строки).

  • 0
    Я остаюсь поражен тем, что std::rename стандартизирован.
  • 1
    Обратите внимание, что переименование не копирует файл, а перемещает его. Так что это не решение проблемы.
Показать ещё 2 комментария
0

system("copy \"C:\\users\\person\\log file\" C:\\users\\person\\desktop")

Я не тестировал это, но он должен работать.

  • 0
    Обратите внимание, что в этом примере также используется двойная обратная косая черта `\`, поскольку они являются специальными символами в C, используемыми для escape-кодов. Вы должны использовать двойной обратный слеш при указании пути к файлу DOS / Windows.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню