文本编辑器
要求
如果遇到#,表示后退一格,即前一字符无效;如果遇到@,表示前一单词无效,即退出到空格,采用栈实现。
输入:输入一行,由各种字符构成。
输出:根据规则输出最后的文本内容。
输入样例:
out cha@putchar(*s=# ++)
输出样例:
out putchar(*s ++)
代码头文件
#include <iostream>
#include <stack>
#include <string>
using namespace std;
定义一个处理文本的函数
string processText(const string& input) {
stack<char> s;for (char ch : input) {
if (ch == '#') {
// 删除上一个字符
if (!s.empty()) {
s.pop();
}
}
else if (ch == '@') {
// 删除上一个单词
while (!s.empty() && s.top() != ' ') {
s.pop();
}
}
else {
// 将字符压入栈
s.push(ch);
}
}
将栈中的内容转化为字符串
string result;
while (!s.empty()) {
result = s.top() + result;
s.pop();
}return result;
}
主函数
int main() {
string input;
cout << "输入一行文本: ";
getline(cin, input);string output = processText(input);
cout << "输出结果: " << output << endl;return 0;
}
结果