#include <iostream>
#include <cstring>

class test {
	private:
		char *str;
		int  size;
	public:
		test(const char*);
		char  operator [] (int k) const { return k<size ? str[k] : 0; };
		char& operator [] (int k) { return str[k]; };
		std::ostream& print(std::ostream&) const;
};

test::test(const char* u)
{
	size= strlen(u);
	str= new char[size];
	for (int k=0, i=size-1; k<size; ++k, --i)
		str[k]= u[i]-'0';
}

std::ostream& test::print(std::ostream& out) const
{
	for (int k=0; k<size; ++k)
		out << int(str[k]);
	return out;
}

std::ostream& operator << (std::ostream& out, const test& t)
{
	return t.print(out);
}

int main(void)
{
	test t("1234");
	std::cout << int(t[3]) << std::endl;
	std::cout << int(t[4]) << std::endl;
	return 0;
}
