以 C++ 为单位从字符串向量中删除字符
Erase a character from a string vector in C++
我正在尝试为一个非常简单的文本编辑器实现撤消功能。目前,我有一个 std::vector,它存储用户为特定行输入的字符串,该行充当用户所在的当前行号。
我能够使用以下代码将字符插入当前字符串:
void Editor::insertCharacter(char& c)
{
lines[row].insert(column, 1, c);
column++;
}
在这种情况下,我将字符插入当前行的特定列中。此列充当光标应该位于的位置的索引,因此通过执行column++
,光标在插入字符后向右移动一个位置。此方法工作正常。我现在遇到的问题是当我尝试撤消插入字符时。
基本上,我必须擦除column
当前所在的字符,然后递减column
以实现"撤消">
我尝试做的第一件事是像这样删除字符:
lines[row].erase(column)
以下是我运行此程序时发生的情况的示例(其中 | 是光标位置(:
hello| (user enters hello)
h|ello (user moves cursor back to column 2)
hTEST|ello (user enters the word TEST)
(user hits ctrl + z which triggers undo)
hTES| (final output)
因此,我在线查看并看到我可以使用迭代器+偏移量来删除变量的索引。所以我更新了撤消功能,如下所示:
lines[row].erase(lines.begin() + column)
但这无法编译,并且我收到此错误:
error: no matching member function for call to
'erase'
lines[row].erase(lines.begin() + column);
~~~~~~~~~~~~~~~^~~~~
那么我应该如何擦除字符串的这一部分而不擦除字符串中剩余的所有内容呢?
不应该是:lines[row].erase(lines[row].begin() + column)
相关文章:
- 正在从C++中的字符数组中删除字符
- 从字符串中删除字符
- 如果不是十六进制,则QT从qlineedit中删除字符
- 从长字符串中删除字符
- 从文件对象的当前位置删除字符
- C++ 删除字符**
- 从字符串中删除字符的第一个和最后一个实例
- 如何在C++中删除字符*数组
- 如何从C 中的字符串中删除字符
- 用“ strcpy”在2D数组中删除(字符)的一行(字符)时是否存在任何错误
- 删除字符并在字符串(C )的末端附加它们
- C++ 字符串,用于删除字符'b'并将字符'a'替换为两个'd'的构建函数
- 在字符串中的定界符之间删除字符
- 从 std::字符串中删除字符从 "(" 到 ")" 用擦除?
- 使用擦除和删除从字符串中删除字符
- C++ 如何删除字符中的双引号
- C++ 中的密码 |打印字符后删除字符
- C++在链表中插入和删除字符
- 字符串流的获取函数不删除字符
- 删除字符C++最后一次出现时字符数组的开头