定义一个字符串类 STR ,实现字符串中字符的循环移动。通过成员函数重载位运算符“ << ”,使字符串 n 位,如“ ab def ijkl ” 4 位后变成“ ef ijklab d ”;通过函数重载位运算符“ >> ”,使字符串右移 n 位。具体要求如下: ( 1 )私有数据成员: l char *s; // 数据成员,存放字符串 ( 2 )公有成员函数: l STR(char *p); // 构造函数,以形参初始化数据成员; l void operator<<(int n); // 重载函数,使字符串 n 位; l void print(); // 输出数据成员; l ~STR(); // 析构函数,释放动态内存。 ( 4 )函数: l friend void operator>>(STR &str, int n); // 使字符串右移 n 位; ( 5 )对所定义的类进行测试。在主函数中输入一个带空格的字符串作为测试数据,先使它 2 位,再使它右移 4 位。