发布
社区首页 >问答首页 >在C++中从字符串向量中删除一个字符

在C++中从字符串向量中删除一个字符
EN

Stack Overflow用户
提问于 2014-12-10 04:26:28
回答 1查看 322关注 0票数 2

我试图为一个非常简单的文本编辑器实现一个撤销函数。目前,我有一个std::vector,用于存储用户输入的字符串,该字符串用作用户所在的当前行号。

通过使用以下代码,我能够将一个字符插入到当前字符串中:

代码语言:javascript
代码运行次数:0
复制
void Editor::insertCharacter(char& c)
{
    lines[row].insert(column, 1, c);
    column++;
}

在这种情况下,我将字符插入到当前行的特定列中。该列充当光标应该位于的位置的索引,因此通过执行column++,游标在插入字符后向右移动一个位置。这种方法效果很好。我现在遇到的问题是当我试图撤销插入一个字符的时候。

基本上,我必须删除column当前所在的字符,然后减少column以实现“撤消”。

我想要做的第一件事是删除这样的角色:

代码语言:javascript
代码运行次数:0
复制
lines[row].erase(column)

下面是一个例子,说明当我运行这个程序时会发生什么(其中,\x是光标的位置):

代码语言:javascript
代码运行次数:0
复制
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)

因此,我在线查看,发现可以使用迭代器+偏移量来删除变量的索引。因此,我更新了undo函数如下:

lines[row].erase(lines.begin() + column)

但是这不能编译,我得到了这个错误:

代码语言:javascript
代码运行次数:0
复制
error: no matching member function for call to
      'erase'
    lines[row].erase(lines.begin() + column);
    ~~~~~~~~~~~~~~~^~~~~

那么,我应该如何在不删除字符串中剩余的所有内容的情况下擦除字符串的单个部分?

EN

Stack Overflow用户

回答已采纳

发布于 2014-12-10 04:29:34

应该是:lines[row].erase(lines[row].begin() + column)

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27393350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档