diff --git a/dumux/io/container.hh b/dumux/io/container.hh index 7799653c783a7de070492bf60931db55b1a2fedb..fe4af83274fc43e257cc0a781a80644e12439571 100644 --- a/dumux/io/container.hh +++ b/dumux/io/container.hh @@ -55,6 +55,20 @@ void writeContainerToFile(const Container& v, std::copy(v.begin(),v.end(), it); } +/*! + * \brief Read an input stream into a container + * \param stream A standard input stream + * \tparam Container The container type, requires begin(), end(), push_back() method + */ +template<typename Container> +Container readStreamToContainer(std::istream& stream) +{ + Container v; + std::istream_iterator<typename Container::value_type> it(stream); + std::copy(it, std::istream_iterator<typename Container::value_type>(), std::back_inserter(v)); + return v; +} + /*! * \brief Read a simple text file into a container * \param filename The filename to write to @@ -65,11 +79,8 @@ void writeContainerToFile(const Container& v, template<typename Container> Container readFileToContainer(const std::string& filename) { - Container v; std::ifstream infile(filename, std::ios::in); - std::istream_iterator<typename Container::value_type> it(infile); - std::copy(it, std::istream_iterator<typename Container::value_type>(), std::back_inserter(v)); - return v; + return readStreamToContainer<Container>(infile); } } // end namespace Dumux