std::string .erase() 没有重载函数的实例

No instance of overloaded function for std::string .erase()

我想实现一个函数来读取 return 和 std::string 的用户输入。我还希望在 return 字符串之前删除回车 return,以防出现问题(有回车 return)。

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 但我相信我已经提供了足够的 headers 并且匹配了函数的参数?

有人可以帮帮我吗?我在这里遗漏了什么吗?

我已经用 C++ 11、C++ 12 和 C++ 14 编译了你的代码。
它不起作用的唯一原因是缺少算法 header
所以只是

#include <algorithm>
#include <iostream>

它应该可以解决问题 - 这些是编译您的函数所需的仅有的两个 header。
另外,您已经声明您使用的是 c++ 11,因此请确保使用 g++ 和 -std=c++11 标志进行编译。