0

这是我第一次发布问题,所以我希望我做对了。无论如何,我正在尝试创建一个程序来向用户询问字符串,计算字母的类型和数量,然后输出字母的频率。到目前为止,即使获得正确的输入,我也遇到了错误,只是无法弄清楚问题所在。我的(相关)代码是:

#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> >&)’

我不知道我做错了什么,而且似乎无法在网上找到与我正在做的事情相关的任何内容。

4

3 回答 3

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();

    // ...
}
于 2013-04-09T22:40:53.417 回答
0
 const string phrase;

删除const函数参数和局部变量声明,否则您不能接受用户对const变量的输入,这意味着不可更改/不可修改。

如下所示:

string getPhrase(string & phrase);  //Function for gathering string input
int main()
{
     string phrase;
     getPhrase(phrase);
     //...
}
于 2013-04-09T22:40:20.083 回答
0

请注意,这phrase是一个const string. 这意味着它是恒定的,无法修改。因此,您不能使用getline设置phrase为用户的输入。

您应该声明phrasestring phrase;然后将参数getPhrase设为非const引用。

string getPhrase(string& phrase);  //Function for gathering string input
int main()
{
     string phrase;
     getPhrase(phrase);
     ...
}
于 2013-04-09T22:40:57.127 回答