Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Портфолио
  • Услуги
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Открытие, закрытие, чтение и запись на языке С.

Posted on 14 Апрель, 201314 Апрель, 2013 by admin

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

Ну что ж господа я как то не знаю функции языка С для открытия, закрытия, чтения и записи, поэтому чтобы не тормозить процесс мы просто перегрузим функции С++, токо уже с вызовами исключения. Ну что ж ПОЕХАЛИ.

Вот код который у меня получился файл main.cpp:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::cerr;
using std::ios;
#include <fstream>
using std::ifstream;
using std::ofstream;
#include <cstdlib>
using std::exit;
#include <string>
using std::string;
 
class File
{
ifstream r;
ofstream w;
public:
File(char* f, char m)
{
if(m=='r')
{
r.open(f);
 
if(!r)
{
cerr <<"don't open file"<<endl;exit(1);
}
}
else if(m=='w')
{
w.open(f);
if(!w)
{
cerr <<"don't open file"<<endl;exit(1);
}
}
}
    ~File()
    {
            r.close();
            w.close();
    }
string read()
{
string s="";
string result="";
while(getline(r,s))
{
//cout <<"mu tyt"<<endl;//mu cyda daje ne popadaem
result+=s;
}
//cout <<result<<endl;//nichego ne vuvodit.
return result;
}
 
void write(char* c)
{
w <<c;
}
};
 
int main()
{
char f[]="ex14_4.cpp";
File fl(f,'r');
//cout <<fl.read()<<endl;
File fl1("txt.txt",'w');
fl1.write("hellow world gacpada");
 
return 0;
}

Что по нему сказать я новенькое для себя открыл это, то что ifstream и ofstream это классы, и для того чтобы установить в объект значение какое нить, то для него нужно вызвать метод open() в данном случае мы вызываем r.open(«имя файла») и w.open(«имя файла»). Отакая от фигня. А исключения я забыл генерировать. Щас создам пример с исключениями.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::cerr;
using std::ios;
#include <fstream>
using std::ifstream;
using std::ofstream;
#include <cstdlib>
using std::exit;
#include <string>
using std::string;
 
class File
{
ifstream r;
ofstream w;
public:
class Except{};
File(char* f, char m)
{
if(m=='r')
{
r.open(f);
 
if(!r)
throw Except();
}
else if(m=='w')
{
w.open(f);
if(!w)
throw Except();
}
}
    ~File()
    {
            r.close();
            w.close();
    }
 
string read()
{
string s="";
string result="";
while(getline(r,s))
{
//cout <<"mu tyt"<<endl;//mu cyda daje ne popadaem
result+=s;
}
//cout <<result<<endl;//nichego ne vuvodit.
return result;
}
 
void write(char* c)
{
w <<c;
}
};
 
int main()
{
try
{
char f[]="x14_4.cpp";//генерирует исключение.
File fl(f,'r');
//cout <<fl.read()<<endl;
File fl1("txt.txt",'w');
fl1.write("hellow world gacpada");
}
catch(File::Except& a)
{
cout <<"don't open file"<<endl;
}
 
return 0;
}

В данном примере у нас в конструкторе генерируется исключение.

[youtube]http://www.youtube.com/watch?v=jmIeIKmWsX0[/youtube]

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • MFC (39)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (28)

Метки

Ajax bootstrap CLI FormData GDlib google Invisible reCAPTCHA media MFC php repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • HollyFrunk к записи Программка для заполнения форума на vBulletin 3.8.7
  • rwerwer к записи google Invisible reCAPTCHA Установка
  • ertert к записи google Invisible reCAPTCHA Установка
  • FrolovAlexbit к записи Программка для заполнения форума на vBulletin 3.8.7
  • Egor к записи C++ прочитать все имена файлов из директории.
©2019 Kselax.ru Theme by ThemeGiant