[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Дзен ООП и прочие премудрости))
StrangerДата: Понедельник, 27.04.2009, 17:52 | Сообщение # 1
Полковник
Группа: Гости
Сообщений: 170
Репутация: 24
Статус: Offline
В связи с закрытием нужной темы, открываю другую.

в общем, вопрос с ходу, к Павлу, который знает в кодинге почти все: работа с потоками ввода-вывода...не cin, cout, а fstream, ostream и тд и тп...

Начиная с объвления класса и до конкретного использования) Оч нада....хэпл


"Ангелы зовут это небесной отрадой, черти - адской мукой, а люди - любовью" (Г.Гейне)
 
eXceedДата: Понедельник, 27.04.2009, 20:16 | Сообщение # 2
Генералиссимус
Группа: Гости
Сообщений: 5466
Репутация: 616
Статус: Offline
Любимая А..гм, Stranger. Отвечаю на ваши вопросы.

В С++ файл открывается посредством его связывания с потоком Имеется три типа потоков: ввода, вывода, ввода/вывода. Перед открытием потока его нужно создать. Для создания потока ввода нужно объявить объект типа ifstream. Для создания потока вывода ofstream. Потоки реализующие одновременно ввод и вывод имеют тип fstream.

Примеры объявлений

Code

ifstream in; //Ввод
ofstream out; // Вывод
fstream io; //Ввод и вывод

После создания потока, одним из способов связать его с файлом является функция open(); Эта функция является членом всех трех классов.

Прототипы функции:

Code
void ifstream::open(const char *file_name, openmode mode = ios::in);

void ofstream::open(const char *file_name, openmode mode = ios::out | ios::trunc);

void fstream::open(const char *file_name, openmode mode = ios::in | ios::out);

*file_name - имя файла, в которое может входить спецификатор пути до файла.

openmode - режим открытия файла. Может быть вида:

ios::app - открывает файл в режиме добавления в конец файла.
ios::ate - задает режим поиска конца файла при его открытии.
ios::binary - открывает файл в двоичном режиме. По умолчанию все файлы открываются в двоичном режиме.
ios::in - ясно из названия.
ios::out - ясно из навания.
ios::trunc - удаляет содержимое файла. По сути перезаписывает содержимое.

Пример простейшего открытия файла.

Code
ofstream mystream;
mystream.open("test");

Если выполнение функции open() завершилось ошибкой, то в булевом выражении поток будет равен false.

Пример.

Code
if(!mystream)
{
cout << "Файл открыть невозможно\n";
}

ВАЖНО!

После работы с файлом необходимо его закрыть!

Делается вызовом метода close();

Пример.

Code
mystream.close();

После того, как файл открыт, очень легко читать данные, ну или записывать в него текстовые данные. Просто используй операторы << и >>.

Пример.

В программе создается файл для вывода, туда записывается информация, и файл закрывается. Затем снова открывается файл и данные читаются.

Code
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
ofstream fout("test"); // Создание файла для вывода
if(!fout)
{
cout << "Файл открыть невозможно\n";
return 1;
}
fout << "Привет!\n";
fout << 100 << ' ' << hex << 100 << endl;
fout.close();
ifstream fin("test"); //Открытие файла на чтение
if(!fin)
{
cout << "Файл открыть невозможно\n";
return 1;
{
char str[80];
int i;

fin >> str >> i;
cout << str << ' ' << i << endl;
fin.close();
return 0;
}

Не форматируемый двоичный ввод/вывод надо?

Про cout и cin не совсем понял =)

cout << Выводим в консоль;

cin >> Читаем_сюда;


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Понедельник, 27.04.2009, 20:24
 
eXceedДата: Понедельник, 27.04.2009, 20:24 | Сообщение # 3
Генералиссимус
Группа: Гости
Сообщений: 5466
Репутация: 616
Статус: Offline
Доставлено!

Прикрепления: 9492830.jpeg (95.5 Kb)


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Вторник, 28.04.2009, 00:20
 
StrangerДата: Четверг, 07.05.2009, 22:47 | Сообщение # 4
Полковник
Группа: Гости
Сообщений: 170
Репутация: 24
Статус: Offline
Народ, программисты...
В общем, дайте совет любителям...
Вопрос по маскам...Есть число int некое..так вот, нужно высчитать значение 4 бит этого числа...

Принимаются различные реализации, варианты и предложения....

P.S. ДАВАЙТЕ ЖЕ...


"Ангелы зовут это небесной отрадой, черти - адской мукой, а люди - любовью" (Г.Гейне)
 
eXceedДата: Пятница, 08.05.2009, 00:44 | Сообщение # 5
Генералиссимус
Группа: Гости
Сообщений: 5466
Репутация: 616
Статус: Offline
Доставка.

В твоем случае:

Code
int a;
char b = a & 0x0f

А если тебе надо выдрать из середины, делай, скажем,

Code
char b = (a & 0x1c) >> 2;
- Это с третьего по пятый биты.

Для полного погружения в камасутру памяти полуркай про битовые поля. bitfields.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Пятница, 08.05.2009, 00:45
 
eXceedДата: Пятница, 08.05.2009, 01:13 | Сообщение # 6
Генералиссимус
Группа: Гости
Сообщений: 5466
Репутация: 616
Статус: Offline
В догонку. Работать в таком виде с битами не очень удобно и интересно. Сейчас наткнулся на bitset контейнер STL в C++

Даю пример.

Code
#include <iostream>
#include <bitset>

using namespace std;

int main()
{
     bitset<(sizeof(int) * 8)> foo; //Создаете bitset контейнер и размечаете его на 32 бита. Как вы поняли можно разметить хоть на 1 бит.

     foo = 10; //Вношу в контейнер число 10, причем вношу просто как в переменную int.
     foo[0] = 1; //Дописываю в нулевой бит значение 1.
     cout << foo; //Вывожу значение контейнера на экран.

     return 0;
}

В результате: 00000000000000000000000000001011

Расположено так ибо адреса идут от старшего к младшему. Издержка архитектуры.

А вот теперь можно срать кирпичами. Создать такой сет можно для любого типа данных.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Пятница, 08.05.2009, 01:14
 
  • Страница 1 из 1
  • 1
Поиск:

close