只擦除字符串(C++)中的一个元素



我有一个字符串="abcdefg"。我将把它复制到循环中的另一个字符串中。然后我想每次只擦除一个字符。首先,我将从第一个字符中删除字符a,它将是"bcdedit"。第二次我将删除b,字符串将为"acdefg"。等等。我试着用橡皮擦()来做,但没用。你可以看看我是如何尝试的:

#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

有人能给我一个正确的方法吗??我真的很危险。

您正在调用的std::basic_string::erase函数具有索引计数。第二个参数是要删除的字符数,您应该使用1

对于一些示例代码:

//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

相关内容

最新更新