#include <iostream>
template <typename T_STR, typename T_CHAR>
T_STR remove_leading(T_STR const & str, T_CHAR c)
{
auto end = str.end();
for (auto i = str.begin(); i != end; ++i) {
if (*i != c) {
return T_STR(i, end);
}
}
// All characters were leading or the string is empty.
return T_STR();
}
int main() {
std::string x = "0000000057";
std::string trimmed = remove_leading(x, '0');
std::cout << "In:" << x << " Out:" << trimmed << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFRfU1RSLCB0eXBlbmFtZSBUX0NIQVI+ClRfU1RSIHJlbW92ZV9sZWFkaW5nKFRfU1RSIGNvbnN0ICYgc3RyLCBUX0NIQVIgYykKewogICAgYXV0byBlbmQgPSBzdHIuZW5kKCk7CgogICAgZm9yIChhdXRvIGkgPSBzdHIuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkgewogICAgICAgIGlmICgqaSAhPSBjKSB7CiAgICAgICAgICAgIHJldHVybiBUX1NUUihpLCBlbmQpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBBbGwgY2hhcmFjdGVycyB3ZXJlIGxlYWRpbmcgb3IgdGhlIHN0cmluZyBpcyBlbXB0eS4KICAgIHJldHVybiBUX1NUUigpOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6c3RyaW5nIHggPSAiMDAwMDAwMDA1NyI7CiAgICBzdGQ6OnN0cmluZyB0cmltbWVkID0gcmVtb3ZlX2xlYWRpbmcoeCwgJzAnKTsKICAgIAogICAgc3RkOjpjb3V0IDw8ICJJbjoiIDw8IHggPDwgIiBPdXQ6IiA8PCB0cmltbWVkIDw8IHN0ZDo6ZW5kbDsKICAgIAoJcmV0dXJuIDA7Cn0=