#include <iostream>
#include <iterator>
#include <string>
using namespace std;
class substr {
const std::string & s;
std::size_t len;
friend std::ostream& operator<<(std::ostream& os, const substr &ss) {
std::copy(ss.s.begin(), ss.s.begin() + std::min(ss.len, ss.s.size()),
std::ostream_iterator<char>(os));
return os;
}
public:
substr(const std::string & s, std::size_t len) : s(s), len(len) {}
};
int main() {
int x = 7;
string foo = "This is a test!";
cout << substr(foo, x);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBzdWJzdHIgewogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgczsKICAgICBzdGQ6OnNpemVfdCBsZW47CgogICAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3Qgc3Vic3RyICZzcykgewogICAgICAgICBzdGQ6OmNvcHkoc3Mucy5iZWdpbigpLCBzcy5zLmJlZ2luKCkgKyBzdGQ6Om1pbihzcy5sZW4sIHNzLnMuc2l6ZSgpKSwKICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxjaGFyPihvcykpOwogICAgICAgICByZXR1cm4gb3M7CiAgICAgfQpwdWJsaWM6CiAgICAgc3Vic3RyKGNvbnN0IHN0ZDo6c3RyaW5nICYgcywgc3RkOjpzaXplX3QgbGVuKSA6IHMocyksIGxlbihsZW4pIHt9Cn07CgppbnQgbWFpbigpIHsKCWludCB4ID0gNzsKCXN0cmluZyBmb28gPSAiVGhpcyBpcyBhIHRlc3QhIjsKCWNvdXQgPDwgc3Vic3RyKGZvbywgeCk7CglyZXR1cm4gMDsKfQ==