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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Система ввода/вывода - C++

17.08.2013, 15:18. Просмотров 1965. Ответов 60
Метки нет (Все метки)

Здорова!

Есть задачка: "Напишите миниатюрную систему потокового ввода/вывода, предоставляющую классы istream, ostream, ifstream, ofstream, функции operator<<() и operator>>() для целых чисел и такие операции, как open() и close(), для файлов."

не знаю даже счего ее начать делать мб просто из них вызвать реальные std::istream ???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 15:18     Система ввода/вывода
Посмотрите здесь:

Функция ввода / вывода - C++
Программа ругается на переменную C, и не выводит нужно результата, посмотрите в чем ошибка Используя принцип разделения ввода/вывода...

Операторы ввода/вывода - C++
Всем привет! Было задание: сделать сложение двух окружностей, н.р. int main() { Circle c1(1,3,3); Circle c2(1,4,4); ...

Операции ввода и вывода С++ - C++
Необходимо продемонстрировать операции &lt;&lt; и &gt;&gt; для ввода и вывода типов char, int, float, double для какого-либо значения

Манипулятор ввода / вывода - C++
Чем отличается манипулятор ввода\вывода от пользовательский ввод\вывод ?

Кодировка ввода и вывода - C++
В программу нужно ввести данные на русском языке, потом вывести #include &quot;stdafx.h&quot; using namespace std; const int num = 5; ...

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

Библиотеки ввода вывода. - C++
Доброе утро! Есть задача: Дан файл с текстом. Проверить, сколько раз в тексте встречается какой-либо отрезок ряда 0123456789 длины не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 09:55     Система ввода/вывода #46
Наверное так нужно сделать:
C++
1
2
c=is.get();
getchar(); // или что-то для извлечения '\n' из потока
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 10:35  [ТС]     Система ввода/вывода #47
Все сделал быстро, там в задании написано что часов 10 на это задание нужно потратить, а я его за какой то час сделал, ну как никак скил прокачан про.
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
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
79
#include <stdio.h>
 
class istream
{
public:
    //конструктор
    istream(){}
    char get(){return getc(stdin);}
    istream& operator>>(char* s){scanf("%s",s);return *this;}
    istream& operator>>(char c){scanf("%c",c);return *this;}
};
 
class ostream
{
public:
    ostream(){}
    ostream& operator<<(char* s){printf("%s",s);return *this;}
    ostream& operator<<(char c){printf("%c",c);return *this;}
};
 
class ifstream
{
    FILE* pF;
public:
    void open(char* s,char* s1="w")
    {
        pF=fopen((const char*)s,s1);
    }
 
    void close(){fclose(pF);}
    
    ifstream& operator>>(char c){fprintf(pF,"%c",c);return *this;}
    ifstream& operator>>(char* s){fprintf(pF,"%s",s);return *this;}
};
 
class ofstream
{
    FILE* pF;
public:
    void open(char* s,char* s1="r")
    {
        pF=fopen((const char*)s,s1);
    }
    void close(){fclose(pF);}
    ofstream& operator<<(char c){fscanf(pF,"%c",c);return *this;}
    ofstream& operator<<(char* s){fscanf(pF,"%s",s);return *this;}
};
 
int main()
{
    istream is;
    ostream os;
    char c;
    os <<"Vvedite cimvol ... ";
    c=is.get();
    os <<"c= "<<c<<"\n";
 
    char string[256];
    os <<"Vvedite string ... ";
    is >>string;//считываем в string.
    os <<"string= "<<string<<'\n';
 
    //test file
    ifstream iff;
    iff.open("myfile.txt");
    
    char k='k';
    iff >>k;
    iff >>"c= ">>k>>'\n'>>"hellow world gacpada\n";
    iff.close();
 
    ofstream off;
    off.open("myfile.txt");
    off <<string;
    os <<"string= "<<string<<'\n';//считаем строчку с символа
    off.close();
 
    return 0;
}
Croessmah
20.08.2013, 10:41
  #48

Не по теме:

Цитата Сообщение от ninja2 Посмотреть сообщение
ну как никак скил прокачан про.
Да верим, верим. Необязательно писать о Вашем супер скилле и профессионально написанном коде в каждом сообщении

ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 10:42  [ТС]     Система ввода/вывода #49
Цитата Сообщение от Croessmah Посмотреть сообщение
Да верим, верим. Необязательно писать о Вашем супер скилле и профессионально написанном коде в каждом сообщении
Ок буду поскромнее .
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
20.08.2013, 10:49     Система ввода/вывода #50
Цитата Сообщение от ninja2 Посмотреть сообщение
а я его за какой то час сделал, ну как никак скил прокачан про
Угу, сразу видна рука гуру. Зачем конструкторы-деструкторы в классе? Действительно, зачем; пользователь сам должен вызывать функции для открытия/закрытия файлов. А главное, пользователь данного класса не будет рассчитывать на то, что в деструкторе файл будет закрыт. И сам его закроет.
Один только вопрос к Вам, о Гуру, Вы сами бы использовали данные классы?
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 10:51  [ТС]     Система ввода/вывода #51
Цитата Сообщение от Discoverer Посмотреть сообщение
Вы сами бы использовали данные классы?
Нет использовать я буду <iostream> или <stdio.h>, это так задачка.
Discoverer
16 / 14 / 2
Регистрация: 05.07.2013
Сообщений: 27
20.08.2013, 10:56     Система ввода/вывода #52
А смысл "задачки" в том, чтобы как-нибудь за час сделать ненужные классы, которыми пользоваться нормально нельзя?
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 11:05  [ТС]     Система ввода/вывода #53
Цитата Сообщение от Discoverer Посмотреть сообщение
А смысл "задачки" в том, чтобы как-нибудь за час сделать ненужные классы, которыми пользоваться нормально нельзя?
Конечно смысл не в том чтобы создать всем нужные классы. Тут скорее всего ознакомится со стандартными классами, посмотреть их структуру, реализацию.

Добавлено через 1 минуту
Например хотябы понять и знать что каждый из классов делает.
Croessmah
Модератор
Эксперт CЭксперт С++
13059 / 7322 / 817
Регистрация: 27.09.2012
Сообщений: 18,074
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 11:12     Система ввода/вывода #54
Цитата Сообщение от ninja2 Посмотреть сообщение
Тут скорее всего ознакомится со стандартными классами,
Ваш класс похож на стандартные только именами!
1) Где считывание в int, double, string и т.д.?
2) Где обработка ошибок при открытии файлов, считывании данных и т.д.?
3) Какого лешего я должен сам закрывать файл? А если вдруг исключение с раскруткой стека и деструктор сработает, но он бесполезен как таковой, так что теряем ресурс
4) Где разделение на бинарный и текстовый режимы?
5) Где буферизация?
6) Где ВСЁ остальное и необходимое?

Ваш класс даже, по сути, не является оберткой над Си'шными функциями, он просто дает новые названия для них и другой синтаксис использования и всё!
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
20.08.2013, 11:18     Система ввода/вывода #55
Croessmah,
Напишите миниатюрную систему потокового ввода/вывода, предоставляющую классы istream, ostream, ifstream, ofstream, функции operator<<() и operator>>() для целых чисел и такие операции, как open() и close(), для файлов."
1 пункт не в тему, нужно только для целых (хотя тут сделано для символов, переделать это как-то просто).
2, 3 надо бы.
А вот 4,5,6 под большим вопросом, иначе как-то с миниатирностью не заладится.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 11:19  [ТС]     Система ввода/вывода #56
Croessmah, Так это все морочно делать я это попробую сделать когда полностью свою <iostream> делать буду Стандартные библиотеки ввода/вывода. А мб и скорее всего как попало сделаю основные функции и мб спроектирую структуру как в СТЛ да и хватит на этом, время зря неохота терять. Теоретически разберу да и все.
Discoverer
20.08.2013, 11:20
  #57

Не по теме:

Croessmah, это ж "задачка". Главное - "ознакомиться" со стандартными классами и хотя бы понять, что они делают. Ну и написать что-нибудь за час, а потом говорить, что выполнил задание и похваляться своим "про" скиллом.

Croessmah
Модератор
Эксперт CЭксперт С++
13059 / 7322 / 817
Регистрация: 27.09.2012
Сообщений: 18,074
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 11:20     Система ввода/вывода #58
Цитата Сообщение от ForEveR Посмотреть сообщение
1 пункт не в тему, нужно только для целых
Я уже про
Цитата Сообщение от ninja2 Посмотреть сообщение
ознакомится со стандартными классами, посмотреть их структуру, реализацию.
Цитата Сообщение от ForEveR Посмотреть сообщение
иначе как-то с миниатирностью не заладится.
Ну миниатюрность - понятие растяжимое а так да, реализация этих пунктов ставит миниатюрность под сомнение
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
20.08.2013, 11:22  [ТС]     Система ввода/вывода #59
Да да да Forever прав, а вообще смысла нету полностью стл переделывать именно все, это очень трудоемкий процесс, конечно можно, но времени много уйдет, даже просто со всеми функциями ознакомится и протестировать примеры у меня неделя ушла.

Добавлено через 56 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
Я уже про
Да это провокация была, я не серьезно написал, шутя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 11:32     Система ввода/вывода
Еще ссылки по теме:

Операторы ввода и вывода - C++
Допустим есть класс class Checked { public: private: double id; int *beg; std::pair&lt;std::strin, std::strin&gt;...

Потоки ввода-вывода в С++ - C++
Ребят, нужна помощь В программирование я новичок, но сдать нужно 1. Написать программу, печатающую символы. Использовать цикл while....

Операторы ввода вывода в С++ - C++
ребят дайте пожалуйста понятную ссылку что бы можно было почитать и выучить операторы ввода вывода пожалуйста...

Операторы ввода вывода - C++
Сама задача. Реализовать класс «бинарное дерево» рекурсивно реализовав в нем метод добавления элемента, а также (нерекурсивно) метод поиска...

Переопределение ввода / вывода - C++
Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) ули-ца, 3) дом, 4) квартира, 5) тел. номер....


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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.08.2013, 11:32     Система ввода/вывода #60
Цитата Сообщение от Croessmah Посмотреть сообщение
Где буферизация?
Ну так она в сишной библиотеке есть, значит буферазация как раз есть, при чем из коробки и автор скорее всего не догадывается об этом. Другой вопрос, что нет никакого способа сделать flush. То есть только закрывать и открывать файл заново, другого способа "бороться" с буферизацией в текущей реализации нет.
Yandex
Объявления
20.08.2013, 11:32     Система ввода/вывода
Ответ Создать тему
Опции темы

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