我有一个字符串=" 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
任何人都可以建议我一个正确的方法吗?我真的处于危险之中。
答案 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