Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.86
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

<fstream> как копировать файлы? - C++

21.06.2011, 21:55. Просмотров 5202. Ответов 17
Метки нет (Все метки)

Какой функцией можно скопировать нужный файл?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.06.2011, 21:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос <fstream> как копировать файлы? (C++):

Как создавать файлы dat и вводить в них данные (при помощи fstream)? - C++
как создавть файлы .dat и вводить в них данные

Fstream и бинарные файлы - C++
Необходимо скопировать картинку. Не знаю как сделать.

Файлы FILE и fstream - C++
Подскажите, пожалуйста. В большинстве примеров и прочей не сильно официальной литературе при работе с файлами используется: FILE...

Fstream и бинарные файлы - C++
вообщем вопрос такой.. как читать строки из бинарного файла, и как записывать в бинарный файл строки используя fstream, и можно ли...

Запись/чтение структур (файлы) + разница между FILE * и <fstream> - C++
Всем привет. Порыскал по форуму, погуглил... Решения есть, но они не ясны (что, почему да как) и не все работают. Однако, я так и не нашёл...

Копировать, перенести, удалить файлы в C++ - C++
Здравствуйте ребята, я новичок в С++, и мне нужен ваш совет, как профессиональных программистов. Я пишу консольную программу, которая на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
21.06.2011, 21:57 #2
link
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.06.2011, 22:00 #3
Gepar, нет такой функции.
C++
1
2
3
4
5
6
7
    std::ifstream ifs("1.txt");
    std::ofstream ofs("2.txt");
 
    std::string str;
 
    while (std::getline(ifs,str))
        ofs << str << '\n';
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.06.2011, 22:18 #4
Наверное, правильно будет открыть файл на чтение в бинарном режиме и считывать его соответсвующим образом (методом read)- это в самом общем, случае мы ведь не знаем, какой у ТС файл. Может, у него именно бинарный (в смысле НЕтекстовый). Предложенным способом, кстати, мы перегоним в новый файл только одну строку.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.06.2011, 22:50 #5
Цитата Сообщение от kravam Посмотреть сообщение
Наверное, правильно будет открыть файл на чтение в бинарном режиме и считывать его соответсвующим образом (методом read)- это в самом общем, случае мы ведь не знаем, какой у ТС файл. Может, у него именно бинарный (в смысле НЕтекстовый)
да, это так.

Цитата Сообщение от kravam Посмотреть сообщение
Предложенным способом, кстати, мы перегоним в новый файл только одну строку.
нет, я проверил же перед тем как кинуть.

getline возвращает поток, т.е запись аналогична
C++
1
2
3
4
5
    while (ifs) {
        std::getline(ifs,str);
        if (ifs.fail()) break;
        ofs << str << '\n';
    }
или более лаконично while (1) ...
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.06.2011, 22:56 #6
Я блин бился-бился над тем, как текстовый файл в строку перегнать, а тут раз- и в дамки....
+++++++++++++++++++++++++++++++++++++++
http://www.cplusplus.com/reference/string/getline/

Цитата:
istream& getline ( istream& is, string& str );
....
The delimiter character is delim for the first function version,
and '\n' (newline character) for the second.

На всякий случай- какой компилятор?
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
21.06.2011, 22:57  [ТС] #7
И всё равно что-то не верится что стандартной функции никакой нет
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.06.2011, 23:03 #8
Можно CopyFile
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
21.06.2011, 23:06 #9
Gepar, придётся поверить.
можешь сам посмотреть, стандартная библиотека не подразумевает такой функции
http://www.cplusplus.com/reference/iostream/fstream/

сторонние штуки типа Api или QFile такие функции имеют...

kravam,
VS2008
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
21.06.2011, 23:07 #10
Цитата Сообщение от Gepar Посмотреть сообщение
И всё равно что-то не верится что стандартной функции никакой нет
Рас уж предложили WinAPI, то можно посмотреть и в сторону boost::filesystem::copy_file.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.06.2011, 23:10 #11
OstapBender, был неправ
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
22.06.2011, 15:42  [ТС] #12
Если уж в сторону winapi, то может проще сделать через стандартную коммандную строку (через вызов system), я правда так только очистку экрана до этого делал, если кто знает как это сделать через коммандную строку - напишите пожалуйста, в winapi пока закапываться не хочу.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.06.2011, 15:48 #13
Gepar, а чем вам не нравится вариант из 2-го поста?
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
22.06.2011, 16:02 #14
Gepar,
C
1
system("copy D:\\1.txt D:\\2.txt");
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
22.06.2011, 16:12 #15
Как вариант
C++
1
2
3
std::ifstream in("input.txt");
std::ofstream out("output.txt");
out << in.rdbuf();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2011, 16:12
Привет! Вот еще темы с ответами:

Как копировать залочены эксплорером файлы - C++
Интернет эксплорер загружая поточное видео (файлы с YouTube и пр. сайтов), в каталоге временных файлов создаёт временный flv файл, который...

Как проверить, открылся ли fstream? - C++
Nado otkrit file i proverit otkrilsa li on ili net. Podskazhite kakim obrazom eto mozhno sdelat? Zaranee spasibo.

Как работает write в fstream? - C++
есть файл с текстом: fstream f(&quot;f.txt&quot;,ios::in); надо его разделить его на части по сколько-то байт (переменная piece) создаю...

fstream::tellp() не работает как надо. - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt; using namespace std; int main(int argc, char** argv) { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.06.2011, 16:12
Ответ Создать тему
Опции темы

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