这是我第一次发帖提问,所以我希望我能说得对。无论如何,我正在尝试创建一个程序来询问用户字符串,计算字母的类型和数量,然后输出字母的频率。到目前为止,我甚至在获得正确的输入时出错,并且无法弄清楚问题是什么。我的(相关)代码是:
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
using namespace std;
string getPhrase(const string & phrase); //Function for gathering string input
int main()
{
const string phrase;
getPhrase(phrase);
...
}
string getPhrase(const string &phrase)
{
cout<<"Enter phrase: "
getline(cin, phrase);
return (phrase);
}
当我跑步时,我得到错误:
freq.cpp: In function ‘std::string getPhrase(const std::string&)’:
freq.cpp:21: error: no matching function for call to ‘getline(std::istream&, const
std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’
我不知道我做错了什么,似乎无法在网上发现任何与我正在做的事情有关的事情。
答案 0 :(得分:1)
您的getPhrase
应如下所示:
std::string getPhrase()
{
std::string result;
std::cout << "Enter phrase: ";
std::getline(std::cin, result);
return result;
}
然后:
int main()
{
std::string phrase = getPhrase();
// ...
}
答案 1 :(得分:0)
const string phrase;
删除函数参数和局部变量声明中的const
,否则您无法接受const
变量的用户输入,这意味着非可变/不可修改。
如下所示:
string getPhrase(string & phrase); //Function for gathering string input
int main()
{
string phrase;
getPhrase(phrase);
//...
}
答案 2 :(得分:0)
请注意phrase
是const string
。这意味着它是常量且无法修改。因此,您无法使用getline
将phrase
设置为用户的输入。
您应该使用phrase
声明string phrase;
,然后将getPhrase
的参数设为非const
参考。
string getPhrase(string& phrase); //Function for gathering string input
int main()
{
string phrase;
getPhrase(phrase);
...
}