Files
fsh-oop/include/util/text.hpp
2024-12-06 15:51:22 +01:00

55 lines
1.1 KiB
C++

#pragma once
#include <string>
#include <optional>
#include <fstream>
#include <stdexcept>
namespace fsh::util {
extern const char* tokens[];
template <class T>
static inline std::optional<std::string> mk_optional(T t){
if(t){
return t->gvalue();
}
return std::optional<std::string>();
}
static inline bool contains(char x, std::string text) {
for (const auto& chr : text){
if(chr == x) return 1;
}
return 0;
};
static inline std::ifstream input(const std::string& x) {
std::ifstream in(x, std::ios::in);
if(!in) {
throw std::runtime_error("Can't open file");
}
return in;
}
static inline std::ofstream output(const std::string& x) {
std::ofstream out(x, std::ios::out);
if(!out.is_open()) {
throw std::runtime_error("Can't open file");
}
return out;
}
static inline std::ofstream output_append(const std::string& x) {
std::ofstream out(x, std::ios::app | std::ios::out);
if(!out.is_open()) {
throw std::runtime_error("Can't open file");
}
return out;
}
}