diff --git a/include/ufo/ufo.impl.hpp b/include/ufo/ufo.impl.hpp index 99cf124..eb0dbb7 100644 --- a/include/ufo/ufo.impl.hpp +++ b/include/ufo/ufo.impl.hpp @@ -227,15 +227,19 @@ inline void Output::write(std::string filename, std::string format, unsigned per { auto [data, out] = zpp::bits::data_out(); out(*this).or_throw(); - std::basic_ofstream(filename, std::ios::binary) - << std::basic_string_view{data.data(), data.size()}; + static_assert(sizeof(char) == sizeof(std::byte)); + std::ofstream file(filename, std::ios::binary | std::ios::out); + file.exceptions(std::ios::badbit | std::ios::failbit); + file.write(reinterpret_cast(data.data()), data.size()); } } inline Output::Output(std::string filename) { auto [data, in] = zpp::bits::data_in(); - auto input = std::basic_ifstream(filename, std::ios::binary); + auto input = std::basic_ifstream + (filename, std::ios::binary | std::ios::in); + input.exceptions(std::ios::badbit | std::ios::failbit); data.assign(std::istreambuf_iterator(input), {}); in(*this).or_throw(); }