#include <iostream>
#include <regex>
#include <string>
using namespace std;
struct FORMATTER
{
regex s_rule;
string r_rule;
};
enum FORMAT_TYPE
{
test,
};
const FORMATTER formats[] =
{
{ regex( "(\\d{2})(\\d{3})" ), "$1-$2" },
};
inline auto format( const FORMAT_TYPE type, const int value )
{
return regex_replace(
to_string( value ), formats[ type ].s_rule, formats[ type ].r_rule );
};
int main()
{
cout << format( test, 12345 ) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+Cgp1c2luZyAgIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgIEZPUk1BVFRFUgp7CglyZWdleCAgIHNfcnVsZTsKCXN0cmluZyAgcl9ydWxlOwp9OwoKZW51bSAgICBGT1JNQVRfVFlQRQp7Cgl0ZXN0LAp9OwoKY29uc3QgICBGT1JNQVRURVIgIGZvcm1hdHNbXSA9CnsKCXsgcmVnZXgoICIoXFxkezJ9KShcXGR7M30pIiApLCAiJDEtJDIiIH0sCn07CgppbmxpbmUJYXV0bwlmb3JtYXQoIGNvbnN0IEZPUk1BVF9UWVBFIHR5cGUsIGNvbnN0IGludCB2YWx1ZSApCnsKICAgIHJldHVybiAgcmVnZXhfcmVwbGFjZSgKICAgIAkJdG9fc3RyaW5nKCB2YWx1ZSApLCBmb3JtYXRzWyB0eXBlIF0uc19ydWxlLCBmb3JtYXRzWyB0eXBlIF0ucl9ydWxlICk7Cn07CgppbnQgbWFpbigpCnsKICAgY291dCA8PCBmb3JtYXQoIHRlc3QsIDEyMzQ1ICkgPDwgZW5kbDsKCiAgIHJldHVybiAwOwp9Cg==