请使用C++编程,实现输入一个由数字和字母构成的字符串,请编写自定义函数将字符串中的字符右移4位后保存,再编写自定义函数将字符串还愿输出。
时间: 2025-01-26 15:06:25 浏览: 21
好的,我来为您编写一个C++程序,实现您所描述的功能。以下是代码实现:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 自定义函数,将字符串中的字符右移4位
string shiftRight(string str) {
// 将字符串转换为字符数组
char arr[str.length()];
strcpy(arr, str.c_str());
// 右移4位
for (int i = 0; i < str.length(); i++) {
arr[i] = arr[i] < ' ' ? arr[i] + 60 : arr[i] - 4;
}
// 将字符数组转换回字符串
string result(arr);
return result;
}
// 自定义函数,将字符串还原
string shiftLeft(string str) {
// 将字符串转换为字符数组
char arr[str.length()];
strcpy(arr, str.c_str());
// 左移4位
for (int i = 0; i < str.length(); i++) {
arr[i] = arr[i] > '~' ? arr[i] - 60 : arr[i] + 4;
}
// 将字符数组转换回字符串
string result(arr);
return result;
}
int main() {
string input;
// 输入字符串
cout << "请输入一个由数字和字母构成的字符串: ";
cin >> input;
// 右移4位
string shifted = shiftRight(input);
cout << "右移4位后的字符串: " << shifted << endl;
// 还原字符串
string restored = shiftLeft(shifted);
cout << "还原后的字符串: " << restored << endl;
return 0;
}
这个程序的工作原理如下:
定义了两个自定义函数
shiftRight
和shiftLeft
,分别用于右移和左移字符串中的字符。在
shiftRight
函数中,我们首先将字符串转换为字符数组,然后对每个字符执行右移4位的操作。这里使用了ASCII码的特性,对于非可打印字符也进行了处理。shiftLeft
函数与shiftRight
类似,但执行的是相反的操作,即将字符左移4位。在
main
函数中,我们首先接收用户输入的字符串。然后调用
shiftRight
函数对字符串进行右移,并输出结果。接着调用
shiftLeft
函数对右移后的字符串进行还原,并输出最终结果。
这个程序可以处理包含数字和字母的字符串,并且可以正确地进行右移和还原操作。请注意,这个实现假设输入的字符串只包含ASCII字符。如果需要处理Unicode字符,可能需要使用更复杂的方法。
相关推荐


















