Группа 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__*/