仅清除字符串中的一个元素(C ++)

时间:2014-11-10 21:48:42

标签: c++ string erase

我有一个字符串=" abcdefg"。我将它复制到循环内的另一个字符串。然后我想每次只删除一个字符。首先,我将删除第一个字符a,它将是" bcdefg"。第二次我将删除b,字符串将是" acdefg"。等等。我尝试使用erase()来做它,但它没有用。您可以看一下我的尝试方式:

#include <iostream>
#include <cstring>
#include <string>
using namespace std;

int main() {
    string abc = "abcdefg"; // the main string
    int len = abc.length();
    for(int i=0;i<len;i++)
    {
        string cba = abc;       // I copy it to another string
        cba.erase(i,i+1);       // I try to erase only one element
        cout<<cba<<endl;
    }
    return 0;
}

输出应为:

bcdefg
acdefg
abdefg
abcefg
abcdfg
abcdeg
abcdef

但是我的代码打印出来了:

bcdefg
adefg
abfg
abc
abcd
abcde
abcdef

任何人都可以建议我一个正确的方法吗?我真的处于危险之中。

2 个答案:

答案 0 :(得分:5)

您呼叫的std::basic_string::erase功能采用索引计数。第二个参数是要删除的字符数,您应该使用1

答案 1 :(得分:0)

对于一些示例代码:

//M a r k
//0 1 2 3
string name = "Mark"; 
//erase the single character 'r' at position 2
name.erase(2, 1); //M a k