- 使用<char,char>类型的散列表保存字符映射关系;
- 可能读取连续空格,使用 getline(cin,str) 处理。
#include <iostream>
#include <map>
using namespace std;
int main() {
string str;
string keys="1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
map<char,char> keyMap;
for(int i=1;i<keys.length();i++){ // 注意下标i从1开始
keyMap[keys[i]]=keys[i-1];
}
keyMap[' ']=' '; // 空格不需要被转换
while(getline(cin,str)){ // 可能输入多个连续空格,也需要被读取
for(int i=0;i<str.length();i++){
str[i]=keyMap[str[i]];
}
cout<<str<<endl;
}
return 0;
}

京公网安备 11010502036488号