每个字符的ascii码往前减30位(C++)

C++

    (C++)如何实现将任意单词的字母反转,在将每个字符的ascii码往前减30位,
            如:输入abc 得到 cba 得到 EDC
#include <iostream>
using namespace std;

int main()
{
    string s = "abc";
    const char *t = s.c_str();
    char * rev = new char[s.length() + 1];
    for (int i = 0; i < s.length(); i++)
        rev[i] = (char)(*(t + s.length() - i - 1) - 30);
    rev[s.length()] = '\0';
    string result = rev;
    cout << result;
    return 0;
}

用char字符串的话,只需要把str.length() 改为strlen(str),头文件string.h

 #include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cin >> str;
    for (int i = 0; i < str.length(); i++) 
        str[i] -= 30;
    cout << string(str.rbegin(),str.rend());
    return 0;
}
 #include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cin >> str;
    char tmp;
    for (int i = 0; i < str.length(); i++) 
        str[i] -= 30;
    for (int i = 0; i < str.length() / 2; i++) {    //首尾交换位置
        tmp = str[i];
        str[i] = str[str.length() - i - 1];
        str[str.length() - i - 1] = tmp;
    }
    cout << str;
    return 0;
}