#include "utils.h" #include #include #include std::string formatCentAsEuroString(const int cent, int width) { std::stringstream currStream; try { std::locale myLocale("de_DE.utf8"); currStream.imbue(myLocale); currStream << std::right << std::setw(width) << std::showbase << std::put_money(cent, false); } catch (std::runtime_error& err) { currStream << std::fixed << std::setw(width >= 4 ? width - 4 : width) << std::setprecision(2) << cent / 100.0L << " €"; } return currStream.str(); } std::optional convertToPosPrinterDevice(const std::string& device, const std::string& endpoint) { if (device.empty()) { return std::nullopt; } PrinterDevice printerDevice; std::string delimiter = ":"; try { printerDevice.idVendor = std::stoi(device.substr(0, device.find(delimiter)), 0, 16); printerDevice.idProduct = std::stoi(device.substr(device.find(delimiter) + 1), 0, 16); if (endpoint.empty()) { printerDevice.endpoint = 0x03; } else { printerDevice.endpoint = std::stoi(endpoint, 0, 16); } } catch (std::exception& ex) { throw ex; } return printerDevice; } #ifdef _WIN32 std::string convertFromUtf16ToUtf8(std::u16string& utf16String) { std::string u8_conv = std::wstring_convert, char16_t>{}.to_bytes(utf16String); return u8_conv; } #endif