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

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