题目描述
小D有一个字符串。现在要对它进行 次操作,每次操作有四种类型:
op == 1:取出字符串中的第 个字符(位置从 1 开始计数),并输出这个字符。
如果字符串长度小于 ,则输出"error"(不含引号)。op == 2:清空字符串,让它变成空字符串。op == 3:读入一个新的字符串 ,将 拼接到当前字符串的末尾。op == 4:输出当前整个字符串。如果当前字符串为空,则输出"empty"(不含引号)。
请根据操作要求依次执行,并输出对应的结果。
输入格式
第一行:一个字符串 ,表示初始字符串(可能为空)。
第二行:一个整数 ,表示操作次数。
接下来 行,每行描述一个操作:
- 如果操作类型为 1:
1 x - 如果操作类型为 2:
2 - 如果操作类型为 3:
3 t( 是一个字符串,不含空格) - 如果操作类型为 4:
4
其中 为正整数, 由字母、数字或下划线组成。
输出格式
对于每个操作类型 1 或 4,输出一行对应结果。
其他操作(2 和 3)不输出任何内容。
输入输出样例
样例输入 #1
Hello
6
4
1 3
2
4
3 World
4
样例输出 #1
Hello
l
empty
World
样例解释 #1
- 初始字符串
"Hello",接下来有 6 次操作, - 操作
4输出Hello。 - 操作
1 3:取出第 3 个字符(l),输出l。 - 操作
2:清空字符串,此时字符串变为空。 - 操作
4:输出empty。 - 操作
3 World:拼接"World",字符串变为"World"。 - 操作
4:输出World。
样例输入 #2
abc
3
1 5
1 2
4
样例输出 #2
error
b
abc
样例解释 #2
- 初始
"abc",1 5要求取出第 5 个字符,但长度只有 3,所以输出error。 1 2取出第 2 个字符b,输出b。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不需要输出任何内容。
保证初始字符串非空
数据规模
- 初始字符串长度:(非空)。
- 操作次数:。
- 每个新拼接的字符串 长度:。
- 字符只包含大小写字母、数字或下划线,不含空格。
- 所有字符串的总长度(包括初始字符串和所有拼接)不会超过 。