const char * operator() (const char * str, size_t sz) { if (conv) { buf.clear(); conv->convert(str, sz, buf, buf0); return buf.str(); } else { return str; } }
const char * operator() (ParmStr str) { if (conv) { buf.clear(); conv->convert(str, -1, buf, buf0); return buf.mstr(); } else { return str; } }
char * operator() (char c) { buf.clear(); if (conv) { char str[2] = {c, 0}; conv->convert(str, 1, buf, buf0); } else { buf.append(c); } return buf.mstr(); }
int main (int argc, char* argv[]) { if (argc != 4) { error("usage: %s number base1 base2", argv[0]); return 1; } std::string str(argv[1]); int base1 = std::stoi(std::string(argv[2])); int base2 = std::stoi(std::string(argv[3])); Convert convert; try { std::string res; res = convert.convert(str, base1, base2); std::cout << str << " in base " << base2 << " is " << res << std::endl; } catch(const std::invalid_argument& ia) { error("%s", ia.what()); return 1; } return 0; }