我有一个字符串="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