- 使用<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; }