P1112 string字符串-清空-拼接-获取指定位置字符

暂无评定 传统题 GESP字符串 上传者
时间限制1000ms
内存限制256MiB
通过 / 提交0/0

P1112string字符串-清空-拼接-获取指定位置字符

暂无评定 传统题 GESP字符串 上传者
时间限制1000ms
内存限制256MiB
通过 / 提交0/0

题目描述

小D有一个字符串。现在要对它进行 n n 次操作,每次操作有四种类型:

  • op == 1:取出字符串中的第 x x 个字符(位置从 1 开始计数),并输出这个字符。
    如果字符串长度小于 x x ,则输出 "error"(不含引号)。
  • op == 2:清空字符串,让它变成空字符串。
  • op == 3:读入一个新的字符串 t t ,将 t t 拼接到当前字符串的末尾。
  • op == 4:输出当前整个字符串。如果当前字符串为空,则输出 "empty"(不含引号)。

请根据操作要求依次执行,并输出对应的结果。

输入格式

第一行:一个字符串 s s ,表示初始字符串(可能为空)。
第二行:一个整数 n n ,表示操作次数。
接下来 n n 行,每行描述一个操作:

  • 如果操作类型为 1:1 x
  • 如果操作类型为 2:2
  • 如果操作类型为 3:3 t(t t 是一个字符串,不含空格)
  • 如果操作类型为 4:4

其中 x x 为正整数,t t 由字母、数字或下划线组成。

输出格式

对于每个操作类型 1 或 4,输出一行对应结果。
其他操作(2 和 3)不输出任何内容。

输入输出样例

样例输入 #1

Hello
6
4
1 3
2
4
3 World
4

样例输出 #1

Hello
l
empty
World

样例解释 #1

  1. 初始字符串 "Hello",接下来有 6 次操作,
  2. 操作 4 输出 Hello。
  3. 操作 1 3:取出第 3 个字符(l),输出 l。
  4. 操作 2:清空字符串,此时字符串变为空。
  5. 操作 4:输出 empty。
  6. 操作 3 World:拼接 "World",字符串变为 "World"。
  7. 操作 4:输出 World。

样例输入 #2

abc
3
1 5
1 2
4

样例输出 #2

error
b
abc

样例解释 #2

  1. 初始 "abc",1 5 要求取出第 5 个字符,但长度只有 3,所以输出 error。
  2. 1 2 取出第 2 个字符 b,输出 b。
  3. 4 输出当前字符串 "abc"。

说明/提示

如何使用 string 完成本题?

  • 定义和输入:
    string s;
    cin >> s;               // 读入初始字符串(不含空格)
    
  • 获取字符串长度:
    int len = s.size();     // 或 s.length()
    
  • 访问某个字符(位置从 0 开始计数):
    char ch = s[pos];       // pos 从 0 开始,如第 1 个字符是 s[0]
    
    题目中 x 从 1 开始计数,所以实际访问位置是 s[x-1]。
  • 清空字符串:
    s.clear();
    
  • 拼接字符串:
    string t;
    cin >> t;
    s = s + t;              // 或者 s += t;
    
  • 输出字符串:
    cout << s;
    

注意事项

  • 进行 op==1 操作时,需要先判断 x 是否超出当前字符串的长度,如果超出则输出 "error"。
  • op==2 和 op==3 不需要输出任何内容。
    保证初始字符串非空

数据规模

  • 初始字符串长度:1≤∣s∣≤100 1 \le |s| \le 100 (非空)。
  • 操作次数:1≤n≤100 1 \le n \le 100 。
  • 每个新拼接的字符串 t t 长度:1≤∣t∣≤50 1 \le |t| \le 50 。
  • 字符只包含大小写字母、数字或下划线,不含空格。
  • 所有字符串的总长度(包括初始字符串和所有拼接)不会超过 1000 1000 。