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

时间:2018-04-29 17:09:42

标签: c++ string for-loop line 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);
}

1 个答案:

答案 0 :(得分:1)

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

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

string.erase(0, endofstring+1)

有关详情,请参阅http://www.cplusplus.com/reference/string/string/erase/