首页 > 解决方案 > 在 for 循环中使用 erase() 仅擦除第一行

问题描述

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

为什么只删除第一行?

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

标签: c++stringfor-looplineerase

解决方案


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

根据您的期望,您似乎也想删除\n,所以使用index+1

string.erase(0, endofstring+1)

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


推荐阅读