紫书P47 例题3-2

一、题意

输入一段字符串,是手在键盘向右移了一个后的输出结果,要求输出原字符串。

二、解析

用const字符串存放会输入/出的所有字符,然后边输入边找原来的字符(即前一个)进行输出

三、代码

#include <iostream>
#include <string>
using namespace std;
const string str = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";

int main() {
    char ch;
    while((ch = getchar()) != EOF) {
        int idx = str.find(ch);
        if(idx != str.npos) putchar(str[idx - 1]);
        else putchar(ch);
    }
}

/*
O S, GOMR YPFSU/
*/

四、归纳

  • 学会用const存放常量的方式
  • 通过str.find(ch, start_pos)来从一个字符串中获取某个字符第一次出现的位置,注意如果找不到返回的是 str.npos, 不是str.size()

加油吧