C++ 需要有关getline函数错误的编译错误的帮助:调用';时没有匹配的函数;getline(std::istream&;,char&;)和#x27|
我有一个包含getline函数的源代码文件,编译时收到并出错(下面的代码和错误)。我的问题是,我复制并粘贴了一个已经编译和运行的程序(也包括下面)中的整个函数。我在程序中的另外两个源代码文件中也有getline函数,它们都可以很好地编译。我对编程很熟悉,刚开始C++编程(在java上好多了),所以尽量保持简单的答案。我在这里(和谷歌)浏览了一些已经发布的问题和答案,但我找到的所有答案都表明函数的参数不正确。但我知道它们在这里是正确的,因为它在另一个程序中工作得很好。另外,正如您在工作文件中看到的,其中唯一包含的是iostream,它可以工作,即使用代码::块中的g++编译器。我也确保包含所有需要的变量/常量 下面是我从中获取错误的函数和文件的代码。我所指的零件用3*标记(很抱歉,我只能这么做)。这个错误也会在文章的底部重印C++ 需要有关getline函数错误的编译错误的帮助:调用';时没有匹配的函数;getline(std::istream&;,char&;)和#x27|,c++,getline,C++,Getline,我有一个包含getline函数的源代码文件,编译时收到并出错(下面的代码和错误)。我的问题是,我复制并粘贴了一个已经编译和运行的程序(也包括下面)中的整个函数。我在程序中的另外两个源代码文件中也有getline函数,它们都可以很好地编译。我对编程很熟悉,刚开始C++编程(在java上好多了),所以尽量保持简单的答案。我在这里(和谷歌)浏览了一些已经发布的问题和答案,但我找到的所有答案都表明函数的参数不正确。但我知道它们在这里是正确的,因为它在另一个程序中工作得很好。另外,正如您在工作文件中看到的
#include <iostream>
#include <istream>
#include "candidates.h"
using namespace std;
int nCandidatesInPrimary;
int delegatesForThisState;
const int maxCandidates = 10;
int delegatesWon[maxCandidates];
int totalVotes;
int totalDelegates = 0;
int votesForCandidate[maxCandidates];
string candidate[maxCandidates];
int nCandidates;
string candidateNames;
void readCandidates ()
{
cin >> nCandidates;
string line;
getline (cin, line);
for (int i = 0; i < nCandidates; ++i)
{
***getline (cin, candidateNames[i]);***
delegatesWon[i] = 0;
}
}
int findCandidate (std::string name)
{
int result = nCandidates;
for (int i = 0; i < nCandidates && result == nCandidates; ++i)
if (candidateNames[i] == name)
result = i;
return result;
}
void printCandidateReport (int candidateNum)
{
int requiredToWin = (2 * totalDelegates + 2) / 3; // Note: the +2 rounds up
if (delegatesWon[candidateNum] >= requiredToWin)
cout << "* ";
else
cout << " ";
cout << delegatesWon[candidateNum] << " " << candidateNames[candidateNum] << endl;
}
void assignDelegatesToCandidates ()
{
int remainingDelegates = delegatesForThisState;
for (int i = 0; i < nCandidatesInPrimary; ++i)
{
int candidateNum = findCandidate(candidate[i]);
int nDel = (delegatesForThisState * votesForCandidate[i] + (totalVotes-1)) / totalVotes;
if (nDel > remainingDelegates)
nDel = remainingDelegates;
delegatesWon[candidateNum] += nDel;
remainingDelegates -= nDel;
}
}
#包括
#包括
#包括“候选者.h”
使用名称空间std;
int nCandidatesInPrimary;
int代表该状态;
const int maxCandidates=10;
int delegatesWon[最大候选人];
总票数;
整数=0;
int votesForCandidate[maxCandidates];
字符串候选者[最大候选者];
int Ncandiates;
串珠状假丝酵母;
空读候选项()
{
cin>>nCandidates;
弦线;
getline(cin,line);
对于(int i=0;i=需要时)
cout看起来您打算将candidateNames声明为向量candidateNames;
vector<string> candidateNames;
void readCandidates ()
{
cin >> nCandidates;
string line;
getline (cin, line);
candidateNames.resize(nCandidates);
for (int i = 0; i < nCandidates; ++i)
{
getline (cin, candidateNames[i]);
}
}
vector candidateNames;
空读候选项()
{
cin>>nCandidates;
弦线;
getline(cin,line);
candidateNames.resize(nCandidates);
对于(int i=0;i
candidateNames
是单个字符串,而不是字符串的集合。设置字符串的向量怎么样
std::vector candidateNames;
vector<string> candidateNames;
void readCandidates ()
{
cin >> nCandidates;
string line;
getline (cin, line);
candidateNames.resize(nCandidates);
for (int i = 0; i < nCandidates; ++i)
{
getline (cin, candidateNames[i]);
}
}
然后在for
循环之前:
candidateNames.resize(nCandidates);
看起来你忘记了
#include <string>
#包括
很可能其他的头已经拉入了string类本身,但不是所有的支持函数,比如接受std::string
的getline
重载,对不起,我在发布这个问题时可能不公平。我能够找到问题,是在我的头文件中,我把变量搞乱了。对于候选人,我忘记了在头文件的末尾。由于我没有在我的帖子中包含该文件,所以你看不到。不过谢谢你的帮助。真的,这是你能做的最好的事情吗?发布一个有同样问题的5行代码怎么样?我把所有代码放在那里,试图帮助理解问题,并剔除我知道不是问题的东西,like#包括类似的东西,我已经尝试过了,但它不起作用。我从来没有做过向量,这也是家庭作业的一部分,这就是为什么我已经有了工作程序(单个文件)。我们假设只将函数分离到其他源文件中,这些变量也在其他文件中使用。我可以尝试,但我不知道这将如何影响程序的其他部分,通常,对于这些家庭作业,我们不必这样修改它们(通常)还有,为什么它在已经运行的程序中编译得很好(在我尝试将其全部更改为向量之前)?我不想让它成为一个向量,它在另一个程序中可以正常工作。我可以尝试更改它,但我想知道为什么它在另一个程序中工作,而不是在我之前在这个程序中工作。@gimpdogg函数的readCandidates()的整个逻辑以及名称(readCandidates)暗示它应该读取多个候选名称,因此是一个向量。此外,在您的工作示例中,您正在使用数组std::string candidateNames[maxCandidates];
。向量是对数组的改进。好的,我明白了,谢谢,但我已经发现了问题。它在头文件中,我忘记了candidateNames后面的[]。