#include <iostream>
#include <string>
std::string escape_control_characters(const std::string & s)
{
std::string ret;
for(std::string::const_iterator iter = s.begin(); iter != s.end(); ++iter)
{
const char c = *iter;
if(c < ' ')
{
ret.push_back('^');
ret.push_back(c + '@');
}
else if(c == '\x7F')
ret.append("^?");
else
ret.push_back(c);
}
return ret;
}
int main()
{
std::string tmp;
for(int i = 0; i < 128; ++i)
tmp.push_back(i);
std::cout << escape_control_characters(tmp) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RkOjpzdHJpbmcgZXNjYXBlX2NvbnRyb2xfY2hhcmFjdGVycyhjb25zdCBzdGQ6OnN0cmluZyAmIHMpCnsKICAgIHN0ZDo6c3RyaW5nIHJldDsKICAgIGZvcihzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHMuYmVnaW4oKTsgaXRlciAhPSBzLmVuZCgpOyArK2l0ZXIpCiAgICB7CiAgICAgICAgY29uc3QgY2hhciBjID0gKml0ZXI7CiAgICAgICAgaWYoYyA8ICcgJykKICAgICAgICB7CiAgICAgICAgICAgIHJldC5wdXNoX2JhY2soJ14nKTsKICAgICAgICAgICAgcmV0LnB1c2hfYmFjayhjICsgJ0AnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihjID09ICdceDdGJykKICAgICAgICAgICAgcmV0LmFwcGVuZCgiXj8iKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldC5wdXNoX2JhY2soYyk7CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpCnsKICAgIHN0ZDo6c3RyaW5nIHRtcDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMjg7ICsraSkKICAgICAgICB0bXAucHVzaF9iYWNrKGkpOwogICAgc3RkOjpjb3V0IDw8IGVzY2FwZV9jb250cm9sX2NoYXJhY3RlcnModG1wKSA8PCBzdGQ6OmVuZGw7CiAgICByZXR1cm4gMDsKfQo=