Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2011, 18:35   #1
Alex456
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 10
Восклицание Вопросы по работе с файлами С++

Всем добрый день!
Дошёл до темы работы с файломи C++ и вылезли такие вопросики

1) fstream f (text.txt, ... )
Какие операторы идут по умолчанию во втором аргументе ? И какие нём должны быть обязательными?

2) если мы пишем
Цитата:
fstream f (text.txt, ios::in | ios::binary);
то есть создаём только для чтения, то оператор binary не нужен?

Также и с
Цитата:
fstream f (text.txt, ios:ut | ios::in | ios::binary);
?

3) Бинарный файл и обычный файл, записанный в десятичной что-то значит программы? Или же одни функции читают побайтово, а другие побитно?

4) что возвращает функция
Цитата:
reinterpret_cast<const char *>(&number)
когда она использвуется в таком выражении:
Цитата:
f.read ( reinterpret_cast<const char *>(&number), sizeof(number) );
Я так понимаю когда компилятор встречает такой вызов, то заносит данные сразу в переменную number ?
Alex456 вне форума Ответить с цитированием
Старый 11.06.2011, 19:29   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

1, 2 - http://www.cplusplus.com/reference/iostream/fstream/

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

4 - reinterpret_cast - один из операторов приведения типа. В данном случаи приводит значение переменной number к типу const char*
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 11.06.2011, 20:51   #3
Alex456
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 10
По умолчанию

Попробывал считать и скопировать файл точнее фото bmp
Цитата:
#include <iostream>
using std::cout;
using std::cin;
#include<fstream>
using std::ios;
using std::ifstream;
using std:fstream;
#include <new>
using std::nothrow;
main()
{
char *p;
long size;


ifstream in("1.bmp", ios::in | ios::binary );
if (!in) exit(1);

in.seekg(0, ios::end);

size=in.tellg();

p = new(nothrow) char[size+1];
if (p==0) exit(1);

in.seekg(0, ios::beg);

in.read(p, sizeof(p));

/////////////////////////////

ofstream out("2.bmp", ios:ut | ios::binary );
if (!out) exit(1);

out.write(p,sizeof(p));

out.close();
in.close();

delete [] p;

return 0;
}
Почему-то новый файл 2.bmp весит 4 байта. В чём ошибки? Компилятор MinGW Developer Studio
Alex456 вне форума Ответить с цитированием
Старый 14.06.2011, 21:19   #4
Alex456
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 10
По умолчанию

Ап. Может кто-нибудь подскажет почему в моей программе по копированию файла-картинки, у меня копирует только 4 байта??
Alex456 вне форума Ответить с цитированием
Старый 14.06.2011, 22:27   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Код:
in.read(p, sizeof(p));
sizeof(p) == 4 байта на 32-х битных машинах, так как p - указатель.
Нужно
Код:
in.read(p, size);
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа по работе с текстовыми файлами Kowmar Помощь студентам 0 25.05.2010 01:31
Помогите по работе с текстовыми файлами ЕвгениуS Помощь студентам 9 17.01.2010 15:10
Интересный вопрос по работе с файлами в C++ FastDead Общие вопросы C/C++ 8 25.12.2009 23:13
нужна помощь в работе с файлами gemoglobin Паскаль, Turbo Pascal, PascalABC.NET 2 08.07.2009 17:21
Задача на Паскале по работе с типизированными файлами Ake Помощь студентам 12 14.02.2009 02:47