Нет экземпляра перегруженной функции для std :: string .erase () - PullRequest
0 голосов
/ 02 июня 2019

Я хочу реализовать функцию для чтения пользовательского ввода, который возвращает std :: string.Я также хочу удалить возврат каретки перед возвратом строки, на случай, если что-то пойдет не так (есть возврат каретки).

std::string getInput() {
   std::string str = "";
   std::cout << "> ";

   std::getline(std::cin, str);

   if (std::cin.eof()) {
      quitGame();
   }

   str.erase(std::remove(str.begin(), str.end(), '\r'), str.end());

   return str;
}

Ошибка возникает на str.erase, она сообщает no instance of overloaded function, ноЯ полагаю, что предоставил достаточно заголовков и соответствовал параметрам функции?

Может кто-нибудь помочь мне?Я что-то здесь упускаю?

1 Ответ

1 голос
/ 02 июня 2019

Я скомпилировал ваш код с помощью c ++ 11, C ++ 12 и c ++ 14.
Единственная причина, по которой это не сработает, - отсутствие заголовка алгоритма.
Так что просто

#include <algorithm>
#include <iostream>

И это должно сработать - это только два заголовка, необходимые для компиляции вашей функции.
Кроме того, вы заявили, что используете c ++ 11, поэтому убедитесь, что вы компилируете с g ++ и с флагом -std = c ++ 11.

...