Группа SE (Кринкин М) — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Ссылки)
(Ссылки)
Строка 6: Строка 6:
  
 
[http://www.cplusplus.com/ человеческая документация по C++]
 
[http://www.cplusplus.com/ человеческая документация по C++]
 +
 +
== Задания ==
 +
 +
= Обертка над FILE =
 +
 +
Требуется используя cstdio написать класс/структуру file. file должен позволять узнать статус потока ввода/вывода (ошибка, конец файла и т. д.), а также содержать набор методов для ввода/вывода строк и чисел. Сигнатуры методов остаются на ваше усмотрение, для примера, это может выглядеть так:
 +
 +
<nowiki>
 +
#ifndef __FILE_H__
 +
#define __FILE_H__
 +
 +
#include <string>
 +
#include <cstdio>
 +
 +
class file {
 +
public:
 +
    enum open_mode { Read, Write };
 +
    file();
 +
    explicit file(std::string const &fname, open_mode mode = Read);
 +
    ~file();
 +
 +
    void open(std::string const &fname, open_mode mode = Read);
 +
    void close();
 +
 +
    open_mode mode() const;
 +
    bool opened() const;
 +
    bool eof() const;
 +
    bool error() const;
 +
 +
    size_t write(char const *buf, size_t size);
 +
    size_t write(std::string const &str);
 +
    size_t write(char value);
 +
    size_t write(long value);
 +
    size_t write(unsigned long value);
 +
    size_t write(double value);
 +
    size_t newline();
 +
 +
    size_t read(char *buf, size_t size);
 +
    size_t read(std::string &word);
 +
    size_t read(char &c);
 +
    size_t read(long &value);
 +
    size_t read(unsigned long &value);
 +
    size_t read(double &value);
 +
    size_t readline(std::string &line);
 +
};
 +
 +
#endif /*__FILE_H__*/
 +
</nowiki>

Версия 15:32, 11 октября 2013

Ссылки

рейтинг

стандарт на github

человеческая документация по C++

Задания

Обертка над FILE

Требуется используя cstdio написать класс/структуру file. file должен позволять узнать статус потока ввода/вывода (ошибка, конец файла и т. д.), а также содержать набор методов для ввода/вывода строк и чисел. Сигнатуры методов остаются на ваше усмотрение, для примера, это может выглядеть так:

#ifndef __FILE_H__ #define __FILE_H__ #include <string> #include <cstdio> class file { public: enum open_mode { Read, Write }; file(); explicit file(std::string const &fname, open_mode mode = Read); ~file(); void open(std::string const &fname, open_mode mode = Read); void close(); open_mode mode() const; bool opened() const; bool eof() const; bool error() const; size_t write(char const *buf, size_t size); size_t write(std::string const &str); size_t write(char value); size_t write(long value); size_t write(unsigned long value); size_t write(double value); size_t newline(); size_t read(char *buf, size_t size); size_t read(std::string &word); size_t read(char &c); size_t read(long &value); size_t read(unsigned long &value); size_t read(double &value); size_t readline(std::string &line); }; #endif /*__FILE_H__*/