C++ Utilities  5.0.1
Useful C++ classes and routines such as argument parser, IO and conversion utilities
misc.cpp
Go to the documentation of this file.
1 #include "./misc.h"
2 #include "./nativefilestream.h"
3 
4 #include <streambuf>
5 
6 using namespace std;
7 
8 namespace CppUtilities {
9 
15 std::string readFile(const std::string &path, std::string::size_type maxSize)
16 {
17  NativeFileStream file;
18  file.exceptions(ios_base::failbit | ios_base::badbit);
19  file.open(path, ios_base::in | ios_base::binary);
20  file.seekg(0, ios_base::end);
21  string res;
22  const auto size = static_cast<string::size_type>(file.tellg());
23  if (maxSize != string::npos && size > maxSize) {
24  throw ios_base::failure("File exceeds max size");
25  }
26  res.reserve(size);
27  file.seekg(ios_base::beg);
28  res.assign((istreambuf_iterator<char>(file)), istreambuf_iterator<char>());
29  return res;
30 }
31 } // namespace CppUtilities
CppUtilities::NativeFileStream
std::fstream NativeFileStream
Definition: nativefilestream.h:108
CppUtilities::readFile
CPP_UTILITIES_EXPORT std::string readFile(const std::string &path, std::string::size_type maxSize=std::string::npos)
Reads all contents of the specified file in a single call.
Definition: misc.cpp:15
misc.h
CppUtilities
Contains all utilities provides by the c++utilities library.
Definition: argumentparser.h:17
nativefilestream.h