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 标志进行编译。
我想实现一个函数来读取 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 标志进行编译。