Использование erase () в цикле for стирает только первую строку - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь использовать 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 голосов
/ 29 апреля 2018

Это происходит потому, что второй аргумент erase() - это длина, когда вы передаете индекс, поэтому он удаляет все, кроме, кроме \n.

В соответствии с вашими ожиданиями, кажется, вы хотите удалить и \n, поэтому используйте index+1:

string.erase(0, endofstring+1)

Для получения дополнительной информации см. http://www.cplusplus.com/reference/string/string/erase/

...