我为数组下标收到了几个错误,并且没有匹配函数来调用get line ...我不确定为什么。
错误:数组下标
的类型'int [int]'无效错误:数组下标
的类型'double [int]'无效错误:数组下标
的类型'int [int]'无效错误:没有匹配函数来调用'getline(bool)'
到目前为止,这是我的代码:
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <iomanip>
using namespace std;
struct CountiesFirst
{
int counties;
double poverty_rate;
double income;
};
const int MAX_COUNTIES = 10;
bool openFile(ifstream& input)
{
int counties;
double poverty_rate;
double income;
int i=0;
char filename[256];
cout << "Welcome to the Appalachian Poverty/Income Report\n";
cout << "Enter input file name: ";
cin >> filename;
input.open(filename);
getline(input, counties);
while (getline(!input.eof() && i < MAX_COUNTIES))
{
input>>counties[i];
input>> poverty_rate[i] >> income[i];
++i;
}
while (input.eof())
{
input.putback (i) ;
cout << "Input file is empty" << endl;
return i;
}
return !input.fail();
}
void printTable(string counties[],
double poverty_rate[],
double income[],
size_t size)
{
cout << "Counties Poverty Rate Salary\n";
cout << "---------------------------------------\n";
for (size_t i = 0; i < size; ++i)
{
cout.width(17);
cout << left << counties[i];
cout << poverty_rate[i] << "%";
cout.width(13);
cout << right << "$" << income[i] << endl;
}
}
int main()
{
CountiesFirst counties [MAX_COUNTIES];
int filename;
ifstream input;
ofstream output;
if (openFile(input))
{
//sort(counties, poverty_rate, income, size);
void printTable(string counties[], double poverty_rate[], double income[], int size);
}
else
{
cout << "Input file does not exist.\n";
exit(EXIT_FAILURE);
input.close();
output.close();
}
return 0;
}
答案 0 :(得分:0)
下面:
int counties;
double poverty_rate;
input >> counties[i];
input >> poverty_rate[i] >> income[i];
您正在尝试使用int
和double
,就像它们是数组一样。他们不是。
它产生&#34;数组下标的无效类型&#34;错误。
getline
将istream
和string
作为参数。
与此同时,您在这里传递int
:
int counties;
getline(input, counties);
在这里,你做了一件完全错误的事情:
getline(!input.eof() && i < MAX_COUNTIES)
它产生&#34;没有匹配功能&#34;错误。