#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    while (getline(cin, str)) { // 注意 while 处理多个 case
        for(int i=0;i<str.size();i++){
            char c=str[i];
            if((c<='z' && c>='a') || (c<='Z' && c>='A')){
                if(c=='z'){
                    str[i]='a';
                }else {
                    str[i]+=1;
                }
            }   
        }
        cout<<str;
    }
}
  1. scanf("%c",)读取单个字符默认跳过空白(换行符\n 和 空格);
  2. cin>>str; 也会遇到空格或换行符就终止了;

那么 复习一下c++中如何读取一行字符串的(包括空格):

1. cin.getline()读取到字符数组(c最常用)

cin.getline(字符数组名, 最大长度, 终止符);

  • 参数说明:第一个参数:目标字符数组(用于存储读取的字符串)。第二个参数:最大读取长度(包括字符串结束符 \0,实际最多读取 n-1 个字符)。第三个参数(可选):终止符,默认为 '\n'(换行符),遇到该字符时停止读取。
  • 返回值:返回流对象 cin 本身,可用于链式调用。
#include <iostream>
using namespace std;
int main() {
	char str[100];  // 定义字符数组,大小为100        
  // str[100]最多读取99个字符(留1个位置给'\0'),遇到换行符停止    
  cin.getline(str, 100);          
  cout << str << endl;    
  return 0;
}

2. getline()读取到字符串(c++常用)

  • C++ 中 getline(cin, str)用于读取内容到 string 对象,自动动态扩展,无需指定长度;

c++中char类型加减:

  • char 类型的本质是整数(ASCII 码),字符加减本质是整数运算。
  • 字符 ± 字符 → 结果为整数(ASCII 码的加减)。
  • 字符 ± 整数 → 结果为新字符(原 ASCII 码 ± 整数对应的字符),常用于字符编码的偏移(如大小写转换)。
  • 注意 char 的取值范围,避免溢出。