get rid of strfmt and cstrfmt functions for being evil and redundant

This commit is contained in:
HJfod 2024-02-13 22:59:07 +02:00
parent dd62eac4c5
commit b69ac71ede

View file

@ -71,31 +71,6 @@ namespace geode {
return value < minValue ? minValue : maxValue < value ? maxValue : value; return value < minValue ? minValue : maxValue < value ? maxValue : value;
} }
// from https://stackoverflow.com/questions/2342162/stdstring-formatting-like-sprintf
template <typename... Args>
std::string strfmt(std::string const& format, Args... args) {
int size_s = std::snprintf(nullptr, 0, format.c_str(), args...) + 1; // Extra space for '\0'
if (size_s <= 0) {
throw std::runtime_error("Error during formatting.");
}
auto size = static_cast<size_t>(size_s);
auto buf = std::make_unique<char[]>(size);
std::snprintf(buf.get(), size, format.c_str(), args...);
return std::string(buf.get(), buf.get() + size - 1);
}
/**
* Format a string
* @returns Pointer to char array. MAKE SURE TO CALL DELETE[]!
*/
template <typename... Args>
char const* cstrfmt(char const* fmt, Args... args) {
auto str = strfmt(fmt, args...);
char* ptr = new char[str.size() + 1];
strcpy_s(ptr, str.c_str());
return ptr;
}
template <typename T> template <typename T>
std::string intToHex(T i) { std::string intToHex(T i) {
std::stringstream stream; std::stringstream stream;