Показать сообщение отдельно
  #82 (permalink)  
Старый 13.12.2013, 18:59
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Дзен-трансгуманист
Моя первая нога. Ща уже точно не помню, но примерно так...
ОМГ, у тебя как минимум нет delete [] pData.

/** open_file */
template <typename __type, typename __stream>
        inline bool open_file (const std::string &name, __stream &open, std::ios_base::openmode mode = {})
        {
                open = make_unique<stream<__type>>(name);
                auto file = &open->file;

                (*file)->open(name, mode |= std::ios::binary);

                return (*file)->is_open();
        }


/** read_file */
inline const std::string read_file (const std::string &name)
{
        std::string content;
        std::unique_ptr<stream<std::ifstream>> open;

        if (!open_file<std::ifstream>(name, open))
                return content;

        using buffer = std::istreambuf_iterator<char>;
        content.assign((buffer(*open->file)), buffer());

        return content;
}


make_unique есть в C++14, хотя он легко и пишется

Сообщение от kobezzza
Clang объявил о 100% поддержке 14-го стандарта
Clang плохого не посоветует )

Последний раз редактировалось monolithed, 13.12.2013 в 19:25.
Ответить с цитированием