在 for 循环中使用 erase() 仅擦除第一行

Using erase() in a for loop only erasing first line

本文关键字:擦除 一行 for erase 循环      更新时间:2023-10-16

我正在尝试在for循环中使用std::string::erase()一次从字符串中删除一行,但它只删除第一行。

为什么只删除第一行?

Using namespace std;
String = "AdamnBennCallumnDennisn"
for(i=0; i<3; i++){
  size_t endofstring = string.find("n");
  string.erase(0,endofstring);
}

发生这种情况是因为erase()的第二个参数是长度,而您正在传递索引,因此它会删除所有内容,但不包括n

根据您的期望,您似乎也想删除n,因此请使用index+1

string.erase(0, endofstring+1)

有关更多参考,请参阅 http://www.cplusplus.com/reference/string/string/erase/