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

时间:2019-06-02 12:43:54

标签: c++ c++11 stdstring

我想实现一个函数来读取返回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 个答案:

答案 0 :(得分:1)

我已经使用c ++ 11,c ++ 12和c ++ 14编译了您的代码。
无效的唯一原因是缺少算法标头
所以

#include <algorithm>
#include <iostream>

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