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

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

Войти
Регистрация
Восстановить пароль
 
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
#1

Работа с файлами - C++

04.11.2013, 21:16. Просмотров 318. Ответов 8
Метки нет (Все метки)

Здравствуйте, суть в том что необходимо сделать что-то типо копирования произвольного файла, т.е. выбираю файл будь то изображение, документ, текстовый документ или экзашник, и он должен копироваться в папку с проектом, пробовал делать так:
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
    ifstream input;
    ofstream output;
    if(!OpenDialog1->Execute())
        return;
 
    wchar_t *FileName = OpenDialog1->FileName.c_str();  
 
    input.open(FileName, ios::binary);
    wchar_t *FileName1 = ReName(FileName);//функция просто добавляет к имени файла 1
    output.open(FileName1, ios::out);
 
 
    if(!input)
        return;
 
    if(!output)
        return;
 
     char c,b;
    while(input>>b)
    {
        c = b;
        output<<c;
    };
 
    input.close();
    output.close();
но так получается только с текстовыми, подскажите что не так ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 21:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами (C++):

работа с файлами - C++
пишу прогу по файлам на С++, мне нужно использовать ф-ию которая сбрасывает указакеть на начало потока. В Си есть ф-ия rewind, есть ли...

работа с файлами - C++
мне надо записать в файл данные, но чтобы не стирались записи, которые уже есть там

Работа с файлами - C++
Проблема с связыванием программы с файлом Нужно, чтобы данные считывались из файла, а не вводились Не совсем понимаю #include...

Работа с файлами - C++
Доброго времени суток... Необходимо выполнить следующее задание: Найти сумму первых шести элементов массива и записать вместо...

Работа с файлами - C++
Всем привет. Дано условие: перенести в новый файл текст таким образом, чтобы в него были записаны символы с четных позиций в строках...

Работа с файлами - C++
Проблема заключается в следующем: у меня есть некоторый файл, структуру которого я однозначно знаю. Но как только прога в этом файле...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
04.11.2013, 21:45 #2
test - исполняемый фаил этой программы( в виндовсе .exe)
file.dat - бинарный файл куда перезаписываем содержимое первого

Как то так наверное

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ifstream in("/home/egor/CODES/test/test",ios::binary|ios::in); //Открываем файл в двоичном режиме только для чтения
ofstream out("/home/egor/CODES/test/file.dat",ios::binary|ios::out); //Открываем файл в двоичном режиме для записи
char a;
 
while(in >> a)
    out << a;
 
in.close(); //Закрываем файл
out.close(); 
 
in.open("/home/egor/CODES/test/file.dat",ios::binary|ios::in);
while(in >> a)
   cout << a; //смотрим каракули на экране(содержимое бинарного файла file.dat)
 
in.close();
0
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
04.11.2013, 21:57  [ТС] #3
мне нужно что бы создавался не dat-овский файл а точно такой же какой и открыли, заметил что размеры файлов отличаются т.е. если я открыл файл изображения весом 37кб то копированный весит 36кб следовательно что-то недописывается, но я не понимаю в чем проблема.
0
FreeMan108
121 / 121 / 6
Регистрация: 04.03.2013
Сообщений: 370
04.11.2013, 21:57 #4
А почему бы просто не CopyFile
0
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
04.11.2013, 22:02 #5
не нужно что бы создавался не dat-овский файл
Это не dat фаил, это я имя придумал, я на линуксе пишу мне разрешения вообще можно не указывать, раз выполняемый фаил моей програмы называется test то пусть фаил назначения будет test1(в вашем случае например *.exe или *.txt, а адрес назначения *1.exe или *1.txt )
0
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
04.11.2013, 22:11  [ТС] #6
Цитата Сообщение от FreeMan108 Посмотреть сообщение
А почему бы просто не CopyFile
спасибо но охото самому сделать, так сказать узнать в чем соль

Добавлено через 1 минуту
Цитата Сообщение от egor2116 Посмотреть сообщение
Это не dat фаил, это я имя придумал, я на линуксе пишу мне разрешения вообще можно не указывать, раз выполняемый фаил моей програмы называется test то пусть фаил назначения будет test1(в вашем случае например *.exe или *.txt, а адрес назначения *1.exe или *1.txt )
так почему-то не работает пробую пока с jpg файлами
0
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
04.11.2013, 22:17 #7
NEvOl, попробуйте так должно все заработать, токо свои пути поставите.
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(){
 
ifstream in("/home/egor/CODES/test/test",ios::binary|ios::in); //Открываем файл в двоичном режиме только для чтения
ofstream out("/home/egor/CODES/test/file.dat",ios::binary|ios::out); //Открываем файл в двоичном режиме для записи
char a;
 
while(in.get(a))
    out.put(a);
 
in.close(); //Закрываем файл
out.close(); 
 
in.open("/home/egor/CODES/test/file.dat",ios::binary|ios::in);
while(in.get(a))
    cout << a; //смотрим каракули на экране(содержимое бинарного файла file.dat)
 
in.close();
 
return 0;
}
1
NEvOl
19 / 18 / 0
Регистрация: 13.08.2012
Сообщений: 726
04.11.2013, 22:22  [ТС] #8
да так заработало, а почему с помощью операторов >>, << не работало ?
0
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
04.11.2013, 22:27 #9
да так заработало, а почему с помощью операторов >>, << не работало ?
точно не помню надо ману курить, в с++ с этими чтением и записью файлов вечный геморой 180 способов и вечно путаю, но привыкаешь
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 22:27
Привет! Вот еще темы с ответами:

Работа с файлами - C++
Создать программу , которая создает файл и состоит из N строк . В первой строке напишите одну цифру &quot;1&quot; , во второй две цифры &quot;2&quot; и тд в...

Работа с файлами - C++
Здравствуйте! Подскажите какие нибудь сторонние библиотеки для работы с файлами. Мне нужно реализовать систему сохранения/загрузки данных,...

Работа с файлами С++ - C++
Написать программу для сжатия какого-либо файла в 2 раза.

Работа с файлами - C++
Здравствуйте! Не могли бы вы мне помочь (показать пример), как работать с файлами в С/С++. К произвести чтение данных из файла (например в...


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

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

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