Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.93
IIIa66uMEM6eP
заставил Бендера
437 / 293 / 10
Регистрация: 05.12.2010
Сообщений: 1,659
Записей в блоге: 6
#1

Копирование файлов без win api - C++

26.04.2011, 18:21. Просмотров 5892. Ответов 41
Метки нет (Все метки)

Добрый день.

Что прошу:
Мне нужно выполнить копирование моего (ехе) в определенные директории - папки.
Мне подсказали что можно использовать CopyFile, CreateDirectory, но они для win api. Можно подключить windows.h - но там тоже не все ровно с этими функциями..
подскажите -
как в с++ (стандарт, не студия, не билдер)
создавать директории, копировать файлы (ехе)
без использования win api.
если не трудно то кинь кусок кода для данных команд, какие библиотеки подключать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2011, 18:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Копирование файлов без win api (C++):

WIN API - C++
Доброе время суток. Учусь в институте и дали сделать такую хрень: Реализовать приложения Win32API: 1. Окно в центре экрана с фоном...

WIN API, кодировка - C++
Доброго времени суток! Вот если написать: MessageBox(NULL,(LPCWSTR) "Тест",(LPCWSTR)"Системное сообщение", MB_OK); выведется...

Преимущество Win Api - C++
Буквально вчера создал тему, где задал вопрос о средствах, с помощью которых можно работать некоторым образом в командной строке. Нашлось...

Потоки win api - C++
Здравствуйте. Такое задание: необходимо написать программу, которая в главном потоке создает дополнительный поток, и уже в нем...

Литература по Win API - C++
Посоветуйте пожалуйсто книгу где изложены основы программирования с win API доступным языком с использованием C++

win api точки входа - C++
меня интересуют названия функция получения точки входа файла получения конца файла (feof не подойдёт) и функция изменения точки входа. ...

41
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
26.04.2011, 20:16 #16
Цитата Сообщение от PB Посмотреть сообщение
Раз в C++ такие проблемы с копированием файлов
Да нет там никаких проблем,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <fstream>
#include <string>
#include <stdexcept>
 
void copy_file(const std::string& src, const std::string& dst, bool rw = true) 
{
   std::ifstream in(src.c_str(), std::ios::binary);
   if ( !in ) 
   {
      throw std::runtime_error("can`t open file: " + src);
   }
   std::ofstream out(dst.c_str(), (std::ios::binary|((rw)?std::ios::trunc:std::ios::binary)));
   if ( !out ) 
   {
      throw std::runtime_error("can`t create file: " + dst);
   }
   out << in.rdbuf();
}
int main()  
{
   try 
   {
      copy_file("E:\\diff.exe", "C:\\test\\diff.exe");
   } catch (const std::exception& e) 
   {
      std::cout << e.what() << std::endl;
   }
   return 0;
}
2
IIIa66uMEM6eP
заставил Бендера
437 / 293 / 10
Регистрация: 05.12.2010
Сообщений: 1,659
Записей в блоге: 6
26.04.2011, 22:05  [ТС] #17
asics, странно.. мне вы говорили что не знаете..
Цитата Сообщение от zim32 Посмотреть сообщение
Извините но это чушь полная
на форуме нашел)) не мои слова..
PB, прикольно - спасибо
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
26.04.2011, 22:07 #18
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
asics, странно.. мне вы говорили что не знаете..
Да я просто потом порылся в своей колекции и нашол этот код, а так как не помню его наизусть, сразу ответить не смог.
0
IIIa66uMEM6eP
заставил Бендера
437 / 293 / 10
Регистрация: 05.12.2010
Сообщений: 1,659
Записей в блоге: 6
26.04.2011, 22:17  [ТС] #19
Цитата Сообщение от asics Посмотреть сообщение
в своей колекции
а если у меня много путей, куда копировать ехе, то как форматнется функция?
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
26.04.2011, 22:22 #20
IIIa66uMEM6eP,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <stdexcept>
 
void copy_file(const std::string& src, const std::string& dst, bool rw = true)
{
   std::ifstream in(src.c_str(), std::ios::binary);
   if ( !in )
   {
      throw std::runtime_error("can`t open file: " + src);
   }
   std::ofstream out(dst.c_str(), (std::ios::binary|((rw)?std::ios::trunc:std::ios::binary)));
   if ( !out )
   {
      throw std::runtime_error("can`t create file: " + dst);
   }
   out << in.rdbuf();
}
int main()
{
   const std::string &file_name("diff.exe");
   std::vector<std::string> vec = {"path_1, path_2, path_3"};
   for(size_t i = 0; i < vec.size(); ++i)
   {
     vec[i] += file_name;
     try
     {
        copy_file("E:\\diff.exe", vec[i]);
     } catch (const std::exception& e)
     {
        std::cout << e.what() << std::endl;
     }
   }
   return 0;
}
Вектор заполните иным способом, так как я зделал это в стиле С++0x, что проканает только на GCC4.5+
1
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.04.2011, 23:46 #21
я тоже не знаю, чем Вам помочь, если для Вас fopen, fread, fwrite, fclose - это не стандартные C/C++ функции.
0
taras atavin
3888 / 1762 / 92
Регистрация: 24.11.2009
Сообщений: 27,565
27.04.2011, 07:15 #22
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
создавать директории, копировать файлы
это, а также переименование, перемещение и удаляение файлов и каталогов, чтение данных из файлов и запись их в файлы - функции операционной системы и без обращения к ней ничего этого делать нельзя. Или ты хочешь слепить универсальный вирус сразу для всех осей, включая ещё не написанные?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.04.2011, 11:36 #23
В С++ НЕТ функций для работы с файлами/папками, т.к. их наличие и представление зависит от Операционной Системы. Точно так же С++ не знает о видео/аудио карте, о модеме о многопоточности...
Используй POSIX функции, они для любых ОС реализованы, практически.
0
IIIa66uMEM6eP
заставил Бендера
437 / 293 / 10
Регистрация: 05.12.2010
Сообщений: 1,659
Записей в блоге: 6
27.04.2011, 16:38  [ТС] #24
Цитата Сообщение от Deviaphan Посмотреть сообщение
НЕТ функций для работы с файлами/папками
а вот некоторые обратное утверждают..

Цитата Сообщение от Deviaphan Посмотреть сообщение
Используй POSIX функции
хм... ничего конкретного не нашел..чтобы мне помогло.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.04.2011, 17:00 #25
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
а вот некоторые обратное утверждают
Пусть утверждают. Список ключевых слов языка С++ не я придумал. Всё остальное - надстройки.)))

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
ничего конкретного не нашел..чтобы мне помогло.
В посте номер два "fopen, fread, fwrite, fclose". Это и есть POSIX. Стандарт. Для всех основных платформ они реализованы. Для удобства программистов. Заботятся о нас.
0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
27.04.2011, 17:36 #26
Цитата Сообщение от Deviaphan Посмотреть сообщение
Список ключевых слов языка С++ не я придумал. Всё остальное - надстройки
В таком случае, в Си/Си++ вообще нет функций для работы с чем-либо
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.04.2011, 17:46 #27
Цитата Сообщение от fasked Посмотреть сообщение
В таком случае, в Си/Си++ вообще нет функций для работы с чем-либо
Ну, так и есть.) Это уже разработчики стандартных библиотек и ОС стараются.)
0
IIIa66uMEM6eP
заставил Бендера
437 / 293 / 10
Регистрация: 05.12.2010
Сообщений: 1,659
Записей в блоге: 6
27.04.2011, 17:48  [ТС] #28
Цитата Сообщение от Deviaphan Посмотреть сообщение
"fopen, fread, fwrite, fclose
функции для открытия, считывания, записи, закрытия файлов... есть ли функция копирования? в библиотеке stdio.h нету..
0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
27.04.2011, 18:07 #29
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
функции для открытия, считывания, записи, закрытия файлов... есть ли функция копирования? в библиотеке stdio.h нету..
открыли - создали новый файл - считали из старого - записали в новый - удалили старый
0
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
27.04.2011, 22:30 #30
Цитата Сообщение от fasked Посмотреть сообщение
удалили старый
Зачем ? Ведь копируем только...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2011, 22:30
Привет! Вот еще темы с ответами:

DrawText win api - Мистика =) - C++
Начинал изучать C++ на FreeBSD, собирал мейкфайлы и горя не знал. Полез в винде разбираться с её API, и начался дурдом. Вот код. Интересует...

Построение графика в Win Api - C++
Требуется построить график по точкам. Все координаты даны. Не могу найти в пространстве интернета, с помощью каких функций это можно...

Win Api ошибка undefined reference to - C++
пишу функцию BOOL OnCreate(HWND hwnd,LPCREATESTRUCT) { HDC hdc; hBitmap=(HBITMAP)LoadImage(NULL, &quot;IMG.bmp&quot;,IMAGE_BITMAP, 0,...

Глобальное считывание комбинаций win api - C++
Всем привет, есть такая штука как autoHotKey смысл ее действия это считывать нажатия клавиш или комбо, и запускать определенные действия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru